指定された検索パターンと発生回数が同じパターンの間の行を抽出する必要があります。
同様に、検索パターンの最初の発生と2番目の発生の間の行、または3番目と4番目の発生の間の行を取得したいと思います。パターン間に線がない場合があります。パターン間に線がない場合、出力は空でなければなりません。
例: -
Line 1
Line 2
Line 3
Pattern
Line 5
Line 6
Line 7
Pattern
Line 8
Line 9
Pattern
Line 11
Line 12
Pattern
Line 13
Pattern
Pattern
最初の発生と2番目の発生の間に予想される出力ライン
Line 5
Line 6
Line 7
3番目と4番目の発生の境界線
Line 11
Line 12
ベストアンサー1
に基づいてこの回答、
awk '/Pattern/{n+=1}; n % 2 == 1 && ! /Pattern/ {print > "output"((n-1)/2)}' input_file
説明する
/Pattern/{n+=1}
:一致時に1をPattern
加えますn
。n % 2 == 1 && ! /Pattern/
:n が奇数の場合にのみ (つまり、各置換パターンの後)、次を実行します。また、Pattern
上記の行を無視してください。{print > "output"((n+1)/2)}'
:上記がtrueの場合、行は名前付きファイルに印刷されますoutputx
。ここでisx
、((n+1)/2)
つまりoutput1
、、...output2
output3