2017-09-19 5 views
1
awk -vN=2 'n>=N;/last pid.*/{++n}' file 

正規表現を含む行を含め、2番目の正規表現の後にすべての行を出力したいとします。これは近いですが、正規表現を含む行は表示されません。これについての迅速なヘルプ?2回目の試合後にすべての行を印刷する方法は?

例入力

last pid: something 
blah 
blah 
last pid: something else 
this 
is 
what 
i 
want 

所望の出力:

last pid: something else 
this 
is 
what 
i 
want 

答えて

1

あなただけの文の順序を逆にする必要があります。

$ awk -vN=2 '/last pid/{++n} n>=N' file 
last pid: something else 
this 
is 
what 
i 
want 

また、/last pid.*/.*は不要です。 /last pid.*/と一致するものは/last pid/と一致し、その逆もあります。

1

awkのソリューション:

$ cat tst.awk 
/last pid/ { p++ }   # if you see a last pid, add 1 to p 
p < N {next}1    # whenever p smaller than N, skip. 
          # else print 

呼び出し、これに:

$ awk -v N=2 -f tst.awk input.txt 
last pid: something else 
this 
is 
what 
i 
want 

のかoneliner:

$ awk -v N=2 '/last pid/ { p++ }p < N {next}1' input.txt 
与え

awk -v N=2 -f tst.awk input.txt 

関連する問題