我想更好地理解awk:我經常搜索正則表達式,並且很多次我只對第N次出現感興趣。我一直沒有使用管道這個任務說:awk正則表達式打印每N次出現
awk '/regex/' file | awk 'NR%N==0'
我如何做awk
(或perl
)相同的任務不包括管道?
是否存在使用管道是計算效率最高的解決方案的一些實例?
我想更好地理解awk:我經常搜索正則表達式,並且很多次我只對第N次出現感興趣。我一直沒有使用管道這個任務說:awk正則表達式打印每N次出現
awk '/regex/' file | awk 'NR%N==0'
我如何做awk
(或perl
)相同的任務不包括管道?
是否存在使用管道是計算效率最高的解決方案的一些實例?
每三:
awk '/line/ && !(++c%3)' infile
例如:
zsh-4.3.12[t]% cat infile
1line
2line
3line
4line
5line
6line
7line
8line
9line
10line
zsh-4.3.12[t]% awk '/line/ && !(++c%3)' infile
3line
6line
9line
zsh-4.3.12[t]% awk '/line/ && !(++c%2)' infile
2line
4line
6line
8line
10line
太棒了!我還可以指定是否需要奇數行或偶數行! awk'/ regex/&&(++ c%2 == 1)'文件 – Mareczek
是,甚至是:'awk'/ regex/&& ++ c%2'file' –
您可以使用多個條件,例如:
awk -v N=10 '/regex/ { count++ } count == N { N=0; print $0 }'
你的意思是*每* N個發生,對嗎? –