看到很多关于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.*$
我们用来确保整行匹配包含模式。 ^
是行开始和 $
是行尾。 .*
匹配 0 个或更多长度的文本。所以^.*
匹配 pattern
之前的所有文本和 .*$
匹配 pattern
之后的所有文本.使用 awk,您可以执行以下操作:
awk '!/affraid/{print} /affraid/{print "Substitution"}' file
关于regex - sed:替换包含模式的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18342674/