在我的具体情况下,我需要遍历数百个包含存储 URL 的变量的文件。所有的 URL 都是不同的,但是为了这个例子,我们可以假设它们都以 'com'' 结尾
我需要在 com 之后立即添加一些文本
因为所有的 URL 都有不同的域,所以我不能使用 sed 命令,例如:
sed -i 's/^ENVIRONMENT="someurl.com"/ENVIRONMENT="someurl.com.origin.net"/g'
因为文件包含其他可能包含 com 的行,所以我不能使用类似的东西:
sed -i 's/com/com.origin.net/g'
我只需要在包含模式的特定行上进行此搜索和替换,例如下面我在正则表达式中的示例:
^ENVIRONMENT.*
如果我可以将 sed 的使用集中在与上述模式匹配的行上,那么我可以使用 sed 的一些改编,例如sed -i 's/com/com.origin.net/g'
. 我当然可以编写一个过于复杂的 bash 脚本来执行此操作,但我知道有一种很好的方法可以告诉 sed 找到一个模式,只在找到该模式的行上工作,然后搜索和替换另一个模式用一个新字符串。
在搜索 Google 时,我发现的唯一半相关链接是:如何仅 sed 包含给定字符串的行?. 但它并没有充分回答我的问题。还能够将 sed 通常限制为仅与模式匹配的行将通过一个不错的工具添加到我的 sed 武器库中。
任何导致解决方案的帮助将不胜感激。
这是一个文件的例子
### Example File
#
#
# someurl.com
ENVIRONMENT="someurl.com"
我想替换ENVIRONMENT="someurl.com"
为ENVIRONMENT="someurl.com.orign.net"