从给定行号列表的文件中打印非连续行

从给定行号列表的文件中打印非连续行

考虑一下之后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

如何从文件中获取第n行

评论:

sed您可以通过编写更详细的,awkperl命令来缩短一长串管道(包括上面的最后一步) :

perl -lane 'print $F[9] if /01\/01/ and /some/ and $F[9]!~/200/' /var/log/some.log

相关内容