ファイルの先頭からn番目の発生までパターンを削除

ファイルの先頭からn番目の発生までパターンを削除

ファイルの先頭からパターンのn番目の発生まで行を省略するコマンドラインツール(awk、sedなど)コマンドを見つけます。つまり、n番目のパターン発生からファイルの終わりまでのみ印刷します。 1行に1つの一致が必ずしもパターンで始まるとは限りません。

たとえば、ファイルの先頭から2番目の部分まで、以下を省略しますfoo

something
abc foo1
maybe something else
foo2 -this line and anything before is gone- 
maybe not
foo3
something

望ましい結果:

maybe not
foo3
something

行のn番目の発生を含める/除外するためのボーナスポイントです。

ベストアンサー1

到着入らないようにするパターンがn番目に現れる

awk -v 'n=3' 'NR == 1, /pattern/ && !--n {next}; 1'

3希望する回数(あなたの場合2)とpattern実際のパターン(fooあなたの場合)に置き換えてください。)

例:

$ seq 30 | awk -v 'n=3' 'NR == 1, /6/ && !--n {next}; 1'
27
28
29
30

到着含むパターンがn番目に現れる

awk -v 'n=3' '/pattern/ && !--n, 0'

例:

$ seq 30 | awk -v 'n=3' '/6/ && !--n, 0'
26
27
28
29
30

おすすめ記事