我想显示包含单词的前3行和后2行。 我尝试了grep命令,但没有显示我想要的内容。
grep -w it /usr/include/stdio.h | head -3 | tail -2
它仅显示其中包含“ it”的第二行和第三行。
答案 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