我是sed的新手,试图编写一个脚本来查找/替换文件中的文本。文件(test.txt)看起来像这样;
hello_world (1.2.0.123)
我发现这个脚本(我继承了):
sed -i 's/\(^\s*hello_world \)(.*)/\1hello_world (1.2.0.456)/' test.txt
正在导致;
hello_world hello_world (1.2.0.456)
当我需要它时
hello_world (1.2.0.456)
我不知道如何让第一部分只与括号匹配,我们将不胜感激。
修改
使用变量等自动生成sed行。我正在寻找一种方法来使这个正则表达式工作而不改变它。我必须使用的变量是
(希望这些变量在sed表达式中很明显)
修改
我最后对此进行了分类,如果其他人有兴趣,请在下面回答。
答案 0 :(得分:0)
搞定了
sed -i 's/\(^\s*\)phoenix_utils (.*)/\1phoenix_utils (1.0.0.28583)/' test.txt
答案 1 :(得分:0)
sed -i -e 's/^\([[:blank:]]*hello_world \).*/\1(1.0.0.28583)/' YourFile
\1
是第一个( )
的内容所以\ 1Helloworld在你的样本中写了两次
根据-e或不依赖于转义内容(行为更改和非GNU sed经常需要转义(
以进行分组模式)