使用 sed,如何用另一个文件中的内容替换包含模式的行?

使用 sed,如何用另一个文件中的内容替换包含模式的行?

输入文件.txt:

one fffds
two xxxx
three ffff
four ffde

数据文件.txt:

six
seven

我想替换包含two xxxx在的行输入文件.txt与内容数据文件.txt。输出文件应如下所示:

输出文件.txt:

one fffds
six
seven
three ffff
four ffde

答案1

这对我有用:

sed -n '
  /two xxxx/{
    rdata_file.txt
    d
  }
  p'

如果该行与表达式匹配,则打印文件的内容并开始下一个循环。否则,将调用第二个命令来打印该行。

在 Perl 中做类似事情的更具可读性的解决方案:

perl -pe '/two xxxx/ and $_=`cat data_file.txt`'

相关内容