Grep:搜索并替换整行

cla*_*amp 16 grep text-processing

命令

 grep "foo" myfile.txt
Run Code Online (Sandbox Code Playgroud)

在我的文件中打印所有匹配的行。

现在我想用另一个字符串替换整行。我怎样才能做到这一点?

Use*_*ess 15

如果要匹配整行的子字符串,则可以使用s带有正则表达式的sed命令来清除该行的其余部分:

sed -i 's/^.*foo.*$/another string/' myfile.txt
Run Code Online (Sandbox Code Playgroud)

或者使用c命令一次性替换匹配的行:

sed -i '/foo/ { c \
another string
}' myfile.txt
Run Code Online (Sandbox Code Playgroud)

如果您不想在提示符下键入多行命令,则可以将其放在脚本中:

$ cat foo.sed
/foo/ { c \
another string
}

$ sed -i -f foo.sed myfile.txt
Run Code Online (Sandbox Code Playgroud)