sed manual说:
将在第一个输入行之前创建(或截断)文件 读;所有w命令(包括成功的w标志的实例) 没有输出引用相同文件名的命令 关闭并重新打开文件。
所以当我这样做时:
sed '/pattern/w filename' file
删除文件中的现有内容,这在我处理日志文件时效果不佳。
如何让sed w
选项将内容附加到文件而不是截断它?
如果没有直接的方法,我们会感激任何小的调整。
答案 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