Grep:搜索并替换整行


13

命令

 grep "foo" myfile.txt

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

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

Answers:


13

如果要匹配整行的子字符串,则可以将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

谢谢!当我使用第二个选项时,我得到:sed:-e表达式#1,字符0:不匹配的“ {”
钳位

在第一行的末尾,您需要键入\,然后按Return键 -重要的是\会转义第一行。然后,确保将}'放在与分开的一行上another string:替换项就是第二行中的所有内容,包括}如果放在那里。
没用的2012年

-1

您可以使用sed的就地功能:

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

这将只替换每一个foobar不整线..
Jahid
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.