我有一個目錄中的文件集合,我想要搜索特定的正則表達式(=([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