如何根据下一行中的内容grep行?

时间:2013-04-10 05:24:28

标签: linux shell grep

我有大文件,需要获取所需内容。

以下是我文件的摘要:

/home/user/balaji.C
#include<stdio.h>
/home/user/ass.cpp
/home/user/bss.cpp
#include<iostream>
#include<sys/types.h>
/home/user/ne.txt
#include<stdio.h>

我想grep唯一的“.C”或“.cpp”类型的行,并且后面的行应该包含“include”字。 预期的结果是:

/home/user/balaji.C
/home/user/bss.cpp

我尝试了但是根据下一行的内容不能grep。 有什么建议吗?

2 个答案:

答案 0 :(得分:0)

grep -B 1 include $FILE | grep -E '\.(C|cpp)$'

假设GNU grep(你标记了Linux),它将把每个“include”行和它的前一行传递给grep,它只过滤到你想要的东西。

答案 1 :(得分:0)

使用awk的一种方式:

awk '/include/ && x ~ /\.(C|cpp)$/{print x;}{x=$0;}' file