パターン間の行を別々のファイルにリダイレクトする

パターン間の行を別々のファイルにリダイレクトする

入力ファイルから2つの反復パターン間の行を分離し、選択した各行を別々のファイルにリダイレクトする必要があります。

入力ファイル形式の例:
Pattern 1
Line1
Line2
Line3
Pattern 2
Pattern 1
Line4
Line5
Pattern 2

出力ファイル:
ファイル1:
Pattern 1
Line1
Line2
Line3
Pattern 2

ファイル2:
Pattern 1
Line4
Line5
Pattern 2

シェルスクリプトの一部としてこれをどのように実行できますか?次のawkコマンドの実装がありますが、出力全体のみをファイルにリダイレクトします。
awk '/Pattern\ 1/,/Pattern\ 2/{print > "filename_$var.txt";var=var+1}var' $filename

ベストアンサー1

次のことを試すことができます。

awk '{if ($0 ~ /Pattern 1/) a++} {print >> "file"a}' file

1つ目awkは、最初の列が目的のパターンで始まることを確認することです。

その場合、導入されていない変数がa増加しますa=1

2番目のawkは次のすべてを追加します。モード1到着モード2文字列を合成するfileファイルとして。

これが役に立つことを願っています。

おすすめ記事