改行でファイルを分割するユーティリティはありますか?たとえば、ファイルに次の行が含まれている場合
aa
bbb
cccc
3つのファイルに分割したい場合は、必要な出力は次のようになります。
aa
、bbb
および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"