考虑一下之后grep
,我awk
再次grep
得到一个如下所示的行号列表:
20
55
98
154
1100
...
我正在使用的命令如下所示:
grep '01/01' /var/log/some.log | grep 'some' | awk '{print $10}' | grep -vn 200 | awk -F ':' '{print $1}'
我现在想打印该文件中的这些行,最好是通过继续管道传输此命令。有任何想法吗?
我知道我可以简单地删除awk '{print $10}'
,awk -F ':' '{print $1}'
但由于某种原因,当我这样做时,我没有得到任何结果,而当我尝试使用上面发布的命令时,我确实得到了数字列表。
答案1
解决方案:
| xargs -I{} sed '{}q;d' /var/log/some.log
评论:
sed
您可以通过编写更详细的,awk
或perl
命令来缩短一长串管道(包括上面的最后一步) :
perl -lane 'print $F[9] if /01\/01/ and /some/ and $F[9]!~/200/' /var/log/some.log