Grep:搜索并替换整行

Grep:搜索并替换整行

命令

 grep "foo" myfile.txt

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

现在我想更换全线用另一根绳子。我怎样才能做到这一点?

答案1

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

sed -i 's/^.*foo.*$/another string/' myfile.txt

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

sed -i '/foo/ { c \
another string
}' myfile.txt

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

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

$ sed -i -f foo.sed myfile.txt

答案2

您可以使用到位的功能sed:

sed -i -e 's/foo/bar/' myfile.txt

相关内容