grep尾巴和头部错误结果

时间:2019-05-22 15:20:31

标签: linux grep tail head

我想显示包含单词的前3行和后2行。 我尝试了grep命令,但没有显示我想要的内容。

grep -w it /usr/include/stdio.h | head -3 | tail -2

它仅显示其中包含“ it”的第二行和第三行。

4 个答案:

答案 0 :(得分:1)

这里的问题是tail从不接收grep的输出,而只接收文件的前3行。为了使这项工作可靠地进行,您需要两次grep,一次是head,一次是tail,或者多路复用流,例如:

grep -w it /usr/include/stdio.h |
tee >(head -n3 > head-of-file) >(tail -n2 > tail-of-file) > /dev/null
cat head-of-file tail-of-file

此处输出:

   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   The GNU C Library is distributed in the hope that it will be useful,
   or due to the implementation it is a cancellation point and
/* Try to acquire ownership of STREAM but do not block if it is not

答案 1 :(得分:0)

您可以简单地添加head和tail的结果:

{ head -3 ; tail -2 ;} < /usr/include/stdio.h

答案 2 :(得分:0)

您应该尝试

grep -A 2 -B 3 "it" /usr/include/stdio.h

-A =在两行匹配词“ it”之后

-B =在3行匹配词“ it”之后

如果确实需要正则表达式,也可以添加-W。

预期输出:

第1行

第2行

包含它的行

第4行

第5行

第6行

答案 3 :(得分:0)

cat /usr/include/stdio.h | grep -w it | head -3 | tail -2