我有一个大型日志文件,我目前正在运行两个命令。我搜索日志组然后制作一个过滤后的文件,我在匹配后返回以下3行:
cat testFile.log |grep 'Text I am looking for' -A 3 > filter.txt
然后,一旦我拥有了我的过滤文件,我会扫描该文件,为自己创建一个我想要的值的最终文件:
cat filter.txt | grep -E 'Data\w{7}' -o > final.txt
我的目标是尽可能在一行中执行此操作,因此我可以在脚本中将一堆这些检查包装在一起,这样我就可以跳转并搜索x,y,z,然后在一行中获取一组已完成的文件。为每一个结束。
答案 0 :(得分:0)
你只需要使用管道。也就是说,UNIX的核心思维方式是将小块组合在一起以创建一个漂亮的工具。
在这种情况下,您必须订购:
grep 'Text I am looking for' -A 3 testFile.log > filter.txt # 1
grep -E 'Data\w{7}' -o filter.txt > final.txt # 2
(注意我删除了cat file | grep '...'
,因为它与说grep '...' file
相同
由于#1的输出是#2,只需使用管道:
grep -A 3 'Text I am looking for' testFile.log | grep -Eo 'Data\w{7}' > final.txt
这样可以防止使用不必要的中间文件。