テキストファイルを特定の名前とコンテンツを持つ複数のテキストファイルに分割するには?

テキストファイルを特定の名前とコンテンツを持つ複数のテキストファイルに分割するには?

file.txtこのスタイルに従うコンテンツがあります。

Target 99C - HJ Shove vs CO + SB SQ
[0.02]JdJh, JsJh, JcJh, JsJd, JcJd, JcJs, AhKh, AdKd, AsKs, AcKc[/0.02], [30.30]KdKh, KsKh, KcKh, KsKd, KcKd, KcKs[/30.30], [31.52]QdQh, QsQh, QcQh, QsQd, QcQd, QcQs[/31.52], [61.57]AdKh, AsKh, AcKh, AhKd, AsKd, AcKd, AhKs, AdKs, AcKs, AhKc, AdKc, AsKc[/61.57]

Target 100A - HJ Call vs BU + SB SQ
[0.01]Ah5h, Ad5d, As5s, Ac5c[/0.01], [0.06]KhTh, KdTd, KsTs, KcTc[/0.06], [0.13]JhTh, JdTd, JsTs, JcTc[/0.13], [0.43]AdAh, AsAh, AcAh, AsAd, AcAd, AcAs[/0.43], [0.59]7d7h, 7s7h, 7c7h, 7s7d, 7c7d, 7c7s[/0.59], [0.77]AhJh, AdJd, AsJs, AcJc[/0.77], [2.44]5d5h, 5s5h, 5c5h, 5s5d, 5c5d, 5c5s[/2.44], [7.06]6h5h, 6d5d, 6s5s, 6c5c[/7.06], [7.21]QdQh, QsQh, QcQh, QsQd, QcQd, QcQs[/7.21], [7.52]5h4h, 5d4d, 5s4s, 5c4c[/7.52], [8.69]KhJh, KdJd, KsJs, KcJc[/8.69], [9.89]6d6h, 6s6h, 6c6h, 6s6d, 6c6d, 6c6s[/9.89], [11.61]8d8h, 8s8h, 8c8h, 8s8d, 8c8d, 8c8s[/11.61], [11.73]9d9h, 9s9h, 9c9h, 9s9d, 9c9d, 9c9s[/11.73], [18.21]JdJh, JsJh, JcJh, JsJd, JcJd, JcJs[/18.21], [24.60]TdTh, TsTh, TcTh, TsTd, TcTd, TcTs[/24.60], [29.64]KhQh, KdQd, KsQs, KcQc[/29.64], AhQh, AdQd, AsQs, AcQc

Target 100B - HJ 4B to 29bb vs BU + SB SQ
[0.07]Ah6h, Ad6d, As6s, Ac6c[/0.07], [0.24]AhTh, AdTd, AsTs, AcTc[/0.24], [5.89]TdTh, TsTh, TcTh, TsTd, TcTd, TcTs[/5.89], [7.59]Kh9h, Kd9d, Ks9s, Kc9c[/7.59], [10.18]Ah3h, Ad3d, As3s, Ac3c[/10.18], [12.39]AdQh, AsQh, AcQh, AhQd, AsQd, AcQd, AhQs, AdQs, AcQs, AhQc, AdQc, AsQc[/12.39], [22.67]Kh7h, Kd7d, Ks7s, Kc7c[/22.67], [25.08]Kh6h, Kd6d, Ks6s, Kc6c[/25.08], [25.74]Kh8h, Kd8d, Ks8s, Kc8c[/25.74], [28.31]KhTh, KdTd, KsTs, KcTc[/28.31], [48.85]AdKh, AsKh, AcKh, AhKd, AsKd, AcKd, AhKs, AdKs, AcKs, AhKc, AdKc, AsKc[/48.85], [49.25]Ah5h, Ad5d, As5s, Ac5c[/49.25], [55.40]QdQh, QsQh, QcQh, QsQd, QcQd, QcQs[/55.40], [61.48]JdJh, JsJh, JcJh, JsJd, JcJd, JcJs[/61.48], [91.31]KhJh, KdJd, KsJs, KcJc[/91.31], [96.32]AhJh, AdJd, AsJs, AcJc[/96.32], [99.57]AdAh, AsAh, AcAh, AsAd, AcAd, AcAs[/99.57], [99.89]AhKh, AdKd, AsKs, AcKc[/99.89], [99.99]KdKh, KsKh, KcKh, KsKd, KcKd, KcKs[/99.99]

Target 100C - HJ Shove vs BU + SB SQ
[0.01]KdKh, KsKh, KcKh, KsKd, KcKd, KcKs[/0.01], [0.11]AhKh, AdKd, AsKs, AcKc[/0.11], [20.31]JdJh, JsJh, JcJh, JsJd, JcJd, JcJs[/20.31], [37.39]QdQh, QsQh, QcQh, QsQd, QcQd, QcQs[/37.39], [51.15]AdKh, AsKh, AcKh, AhKd, AsKd, AcKd, AhKs, AdKs, AcKs, AhKc, AdKc, AsKc[/51.15]

Target 101A - HJ Call vs CO + BU SQ
[0.08]5h4h, 5d4d, 5s4s, 5c4c[/0.08], [0.13]6h5h, 6d5d, 6s5s, 6c5c[/0.13], [0.56]TdTh, TsTh, TcTh, TsTd, TcTd, TcTs[/0.56], [0.71]QdQh, QsQh, QcQh, QsQd, QcQd, QcQs[/0.71], [1.75]8d8h, 8s8h, 8c8h, 8s8d, 8c8d, 8c8s[/1.75], [2.18]7d7h, 7s7h, 7c7h, 7s7d, 7c7d, 7c7s[/2.18], [3.68]9d9h, 9s9h, 9c9h, 9s9d, 9c9d, 9c9s[/3.68], [5.68]KhQh, KdQd, KsQs, KcQc[/5.68], [10.56]JdJh, JsJh, JcJh, JsJd, JcJd, JcJs[/10.56], [17.73]AhQh, AdQd, AsQs, AcQc[/17.73]

ファイルは一定期間持続し、合計300の「ターゲット」を含みます。このファイルを〜300個のファイルに分割したいので、「[0.08]」から「[/17.73]」まですべての内容を含む「HJ Call vs CO + BU SQ.txt」というファイルがあります。

私はcsplitの使用を検討しましたが、名前を変更できないと確信しているので動作しません。 grep&teeを考えていますが、再びそれが正しいアプローチであるかどうかはわかりません。この問題に対する簡単な解決策を知っている人はいますか?

私はWSL(Linux用Windowsサブシステム)を使用しています。

ありがとうございます!

ベストアンサー1

あなたはそれを使用することができますawk

awk -F ' - ' '/^Target/{fn=$2} !/^Target|^$/{print >> fn}' file.txt
  • -F ' - 'awk周囲のスペースとダッシュに分かれています。
  • /^Target/{fn=$2}fnファイル名(2番目のフィールド)に設定されます。
  • !/^Target|^$/{print >> fn}ファイル名と一致しない行の内容^Targetまたは空白行()が印刷されます。^$

Windowsを使用している場合は、ファイルにUnix行の終わりがあるかどうかを慎重に確認してください。

おすすめ記事