ファイルを改行区切りの複数の小さなファイルに分割します。

ファイルを改行区切りの複数の小さなファイルに分割します。

改行でファイルを分割するユーティリティはありますか?たとえば、ファイルに次の行が含まれている場合

aa
bbb
cccc

3つのファイルに分割したい場合は、必要な出力は次のようになります。

aabbbおよびcccc(3つの異なるファイル)

コマンドを確認しましたが、split必要なサイズではなくファイルサイズにのみファイルを切り捨てます。

ユーティリティを直接作成しない場合に使用できる標準ツールはありますか?

答え1

私が見逃したことがない場合、splitスイッチを使用すると行ごとに分割されます-l

   -l, --lines=NUMBER
          put NUMBER lines per output file

だから

split -l 1 inputfile

あなたが欲しいものをする必要があります。

答え2

awk '{print > $0".txt" }'  inputfile

入力ファイルの各一意の行に対してファイルが生成され、その行の.txt内容に応じて名前が拡張子で指定されます。ただし、同時に開いているファイルの制限に達すると、一部の実装awkが失敗する可能性があることに注意してください。

または

awk '{f = "output_file." NR; print $0 > f; close(f)}' inputfile

出力ファイルに番号を付けます。

答え3

A=0
while IFS= read -r LINE ; do
  printf '%s\n' "$LINE" > newfile$A
  (( A++ ))
done < "$INPUTFILE"

関連情報