sed选项将匹配的模式附加到文件

时间:2015-12-09 17:31:35

标签: bash sed

sed manual说:

  

将在第一个输入行之前创建(或截断)文件   读;所有w命令(包括成功的w标志的实例)   没有输出引用相同文件名的命令   关闭并重新打开文件。

所以当我这样做时:

sed '/pattern/w filename' file

删除文件中的现有内容,这在我处理日志文件时效果不佳。

如何让sed w选项将内容附加到文件而不是截断它?

如果没有直接的方法,我们会感激任何小的调整。

2 个答案:

答案 0 :(得分:2)

这可能适合你(GNU sed):

sed -n '/pattern/w/dev/stdout' file1 >>file2

这会将包含pattern的file1中的每一行追加到file2。

替代方案:

sed -n '/pattern/s/.*/echo "&" >>file2/e' file1

答案 1 :(得分:1)

我认为sed有一个w >>file选项,但我无法在任何地方找到它。

您可以使用awk中的类似构造获得所需内容。即。

     awk -v outFile=/p/2/f/outfile '/pattern/{print $0 >> outFile }' inFile

IHTH