ファイル内の最後の2つの文字列の後にn行をコピーする方法は?

ファイル内の最後の2つの文字列の後にn行をコピーする方法は?

ファイル内の文字列の最後の2つの項目を見つけた後、最初のn(たとえば3つ)行をコピーする方法はありますか?最後の発生以降にのみ関心があった場合は、次のものを使用しました。

grep -A4 'stringhere' filein.txt | tail -n 3 >> fileout.txt

ただし、文字列の最後の2つの項目に対して操作を実行するためにこのコマンドを再構築する方法はわかりません。

つまり、以下を含む入力ファイルの場合:

Text 1  
Text 2  
Text 3  
Text 4  
STRINGIMLOOKINGFOR  
Text 5  
Text 6  
Text 7  
Text 8  
Text 9  
STRINGIMLOOKINGFOR  
Text 10  
Text 11  
Text 12  
Text 13  
Text 14  
STRINGIMLOOKINGFOR  
Text 15  
Text 16  
Text 17  
Text 18  
Text 19  

私は出力(n = 3)が次のようになります:

Text 10  
Text 11  
Text 12  
Text 15  
Text 16  
Text 17  

ベストアンサー1

GNU grepを使用してください:

s="STRINGIMLOOKINGFOR"
grep -Poz "$s"'.*(\n.*){3}' file | grep -v "$s" | tail -n 6
テキスト10  
テキスト11  
テキスト12  
テキスト15  
テキスト16  
テキスト17

おすすめ記事