regex - sed:替换包含模式的行

标签 regex shell sed replace

看到很多关于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/

相关文章:

c++ 用于unix命令行操作

bash - 无法将倒数第二个命令行参数设置为变量

PHP - 从字体 URL 中删除查询字符串

javascript - JavaScript 中的匹配模式

c# - 独特的文件重命名问题

python - 使用正则表达式删除出现关键短语python后的句子

linux - 查找不包含搜索字符串的文件

linux - 使用 awk 或 sed 从字符串中抓取文本的特定部分

sed - 收集文件开头的数字

file - 你如何删除unix sh中以 "string"开头的所有行?