3

我看到了很多关于sed命令的问题,但没有一个与我的兄弟相匹配。

我想替换包含模式的整行。

我认为sed命令是最好的选择。我从这个sed命令开始但不起作用

sed -i 's/pattern/Substitution/' myfile.txt

之后我用这个其他命令进行测试,但只替换模式,而不是整行。

echo "hello y luego bye" | sed "s|hello|adeu|g"
4

1 回答 1

11

您需要匹配包含该模式的整行,然后替换。像这样使用它:

sed 's/^.*\bpattern\b.*$/Substitution/' file

我还添加\b了单词边界,以便您只匹配pattern但避免匹配patterns

解释: ^.*\bpattern\b.*$我们用来确保整行匹配包含模式。^是行开始和$行结束。.*匹配 0 个或更多长度的文本。所以^.*匹配之前的所有文本pattern.*$匹配之后的所有文本pattern

使用 awk 你可以:

awk '!/affraid/{print} /affraid/{print "Substitution"}' file
于 2013-08-20T18:44:04.337 回答