大きなテキストファイルがあり、各エントリにヘッダ-XXXX-
とフッター$$$$
が繰り返されています。約20kのエントリがあり、それをそれぞれ500エントリのファイルに分けていきたいと思います。デリミタのn番目のインスタンスでテキストファイルを複数のファイルに分割
私はawk
とおしゃべりしています。以下のコマンドを使用して閉じています。各ファイルは-XXXX-
で始まりますが、最初のファイル以降のすべてのファイルには最後に部分的なエントリがあります。例えば
awk "/-XXXX-/ { delim++ } { file = sprintf(\"file%s.sdf\", int(delim/500)); print > file; }" < big.sdf
:
-XXXX-
Beginning
Middle
End
$$$$
-XXXX-
Beginning
私の代わりに、各ファイルが$$$$
直後に終了します。
Windowsではawk
を使用しています。
「最後に部分的なエントリがあると、すべてのファイルが終了しました」と言うときは、入力データファイルまたは現在出力している内容を記述していますか? ? –
現在取得中の出力です。最初のファイルは、$$$$のすぐ下で正しく切り落とされます。後続のファイルには、-XXXX-の後に部分的なエントリが含まれます。 注:上記のコードをWindowsボックスのCygwinシェルで実行した場合、正しい動作が得られますが、Windowsのコマンドプロンプトを使用して実行すると、前述のように消えます。 – macaday
何が起こっているのかを私が理解することは非常に困難になるだろう。私は何十年もの間に初めてWindowsマシンにアクセスすることはできないため、問題を非常に簡単に再現することはできません。あなたが言うことは、独特のように聞こえる。ファイルは改行で終了していますか(WindowsではCRLF)?もしそうでなければ、それはあなたが見ているものの一部を占めるかもしれません。 –