我看到很多有关sed
命令的问题,但没有一个符合我的要求。
我想替换包含某个模式的整行。
我认为使用sed
命令是最好的选择。我尝试了以下sed
命令,但并不起作用。
sed -i 's/pattern/Substitution/' myfile.txt
接下来我正在测试这个命令,但只替换模式,而不是整行。
echo "hello y luego bye" | sed "s|hello|adeu|g"
您需要匹配包含该模式的整行,然后进行替换。使用方式如下:
sed 's/^.*\bpattern\b.*$/Substitution/' file
我还添加了\b
以匹配单词边界,这样您就只匹配pattern
而避免匹配patterns
。
说明:使用^.*\bpattern\b.*$
确保整行都包含pattern
。 ^
是行首,$
是行尾。 .*
匹配长度为0或更多的文本。 因此,^.*
匹配pattern
之前的所有文本,.*$
匹配pattern
之后的所有文本。
使用awk可以实现:
awk '!/affraid/{print} /affraid/{print "Substitution"}' file