我有grep "keyword" -B 3 log
之类的东西。它显示了很多结果,如:
some trash
unique_id=42
one more trash
keyword and usefull info
如何将每个grep
结果保存到名称为unique_id
的单独文件中?
答案 0 :(得分:1)
如果其他东西真的是垃圾,我会用这个:
awk -F'=' '/unique_id/{f=$2} /keyword/{print > f}' file.txt
因此,每当您看到unique_id
保存=
之后的任何内容作为文件名时。然后,每当您看到关键字时,将该行输出到您之前保存的文件名。
如果您确实想拥有前3行:
awk -F'=' '/unique_id/{f=$2} /keyword/{print p3,p2,p1,$0 > f} {p3=p2;p2=p1;p1=$0}' OFS='\n' file.txt
我只是使用3个变量p3
,p2
和p1
来引用前面的行,并在处理每行之后更新它们“一个“。