我有一个目录中的文件集合,我想要搜索特定的正则表达式(=([14-9]|[23][0-9])
,因为它发生)。但是我只关心这种模式是在第二,第六,第十,......,第4n + 2行。只涂抹某些行文件
有没有很好的方法来做到这一点?
我有一个目录中的文件集合,我想要搜索特定的正则表达式(=([14-9]|[23][0-9])
,因为它发生)。但是我只关心这种模式是在第二,第六,第十,......,第4n + 2行。只涂抹某些行文件
有没有很好的方法来做到这一点?
你应该让它通过awk
首先摆脱不必要线(和可选穿上行号,这样你仍然可以说出真正的线是什么):
pax> echo 'L1
...> L2
...> L3
...> L4
...> L5
...> L6
...> L7
...> L8
...> L9
...> L10
...> L11
...> L12' | awk '{if ((FNR % 4)==2) {print FNR":"$0}}'
2:L2
6:L6
10:L10
(如果您不关心行号,只需使用'{if ((FNR % 4)==2) {print}}'
)。所以像这样:
awk '{if ((FNR % 4)==2) {print FNR":"$0}}' inputFile | grep '(=([14-9]|[23][0-9])'
应该做的伎俩。
试着用awk做到这一点。成才像
BEGIN {i=0; n=0; }
/yourregegex/ {
if(i==n) { print $0; n= 4*i+2;}
}
{
i++;
}
修改答案,而无需使用额外的grep,
awk '/(=([14-9]|[23][0-9])/ && FNR % 4==2{print FNR":"$0}}' inputFile
谢谢!稍作修改,awk'{if((FNR%4)== 2){print FNR“:”$ 0}}'* | egrep'=([14-9] | [23] [0-9])'效果很好。 – Charles 2010-08-16 07:39:23