Bash はファイルを複数行に分割します。

Bash はファイルを複数行に分割します。

複数の行で構成される巨大な.txtファイルがあり、1行に複数の行を互いに区切る特定の文字列があります。

その文字列を使用して、現在の文字列という名前の複数のファイルに分割したいと思います。

特定の文字列の例:

 Found matches in (anything can be here):

巨大な.txtデータの例:

 Found matches in (anything can be here):
 ..............
 ..............
 ..............
 ..............
 ..............
 ..............

 Found matches in EXAMPLE:
 ..............
 ..............
 ..............
 ..............
 ..............
 ..............

希望の出力:

 Found matches in (anything can be here).txt < contains data below its self but before another line stating " Found matches in

 Found matches in EXAMPLE.txt < contains data below its self but before another line stating " Found matches in

また、データがある「(ここに何でもあります)」行に重複した一致がある可能性があるため、現在の行を上書きする代わりに(1)、(2)、(3)などの名前を変更できますか?または、単に rename 現在のファイルも追加します(上書きしません)。

ベストアンサー1

どのくらい行くのでしょうか?

awk '/^ *Found matches/ {FN = $0 ".txt"; next} {print >> FN}' file

わかりますか?

編集する: 修正されたバージョン(「一致するものが見つかりました。」いいえ最初の行に):

awk '/^ *Found matches/ {if (FN) close (FN); FN = $0 ".txt"; next} FN {print >> FN}' file

おすすめ記事