使用 Linux 命令删除和替换一行



我正在尝试删除模式匹配的一行,并使用 sed 命令将整行替换为另一行。文件内容:示例.txt

Testfile=xxxx
Testfile3=uuuu
Testfile4=oooo
Testfile5=iiii
Testfile2=ikeii

我正在使用sed命令删除包含Testfile3=*的行,并替换为Testfile3=行更改

sed -i 's/Testfile3=*/Testfile3=linechanged/' Sample.txt.

但它只是将可替换字符串附加到行中,如下所示

Testfile3=linechanged=uuuu.

我期望输出是

Testfile3=linechanged.

我做错了什么?

星星不匹配:

sed -i 's/Testfile3=.*/Testfile3=linechanged/' Sample.txt
#                   ^^

.*匹配任何长度(*)的任何字符(.),所以它将匹配所有内容,直到行尾。

您可以使用捕获的组来保留将保留的内容,并使用所需的替换来替换其余部分:

sed -i 's/^(Testfile3=).*/1linechanged/' file.txt

在您的情况下,像*这样的转义正则表达式令牌*将与*字面上匹配,例如 到时候Testfile3=*会匹配。

这可能对你有用(GNU sed):

sed '/Testfile3/cTestfile3=linechanged' file

这将匹配包含Testfile3的行,并将其更改为所需的字符串。

相关内容

  • 没有找到相关文章

最新更新