web-dev-qa-db-ja.com

ファイルを複数の小さなファイルに分割し、改行記号で区切る

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

aa
bbb
cccc

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

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

私はすでにsplitコマンドを確認しましたが、ファイルサイズでファイルをカットするだけで、必要なサイズではありません。

自分でユーティリティを作成しなかった場合、使用できる標準的なツールはありますか?

13
daisy

私が何かを欠落していない限り、split-lスイッチ:

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

そう

split -l 1 inputfile

あなたがしたいことをすべきです。

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

これらの行の内容に基づいて名前が付けられたinputfileの一意の行ごとに1つのファイルを作成します(.txt拡張子)。ただし、同時に開くことができるファイルの制限に達すると、一部のawk実装が失敗することに注意してください。

または

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

番号付きの出力ファイルを持っています。

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