入力ファイルから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
ㅏファイルとして。
これが役に立つことを願っています。