改行記号でファイルを分割するユーティリティはありますか?例えば、ファイルに次の行が含まれている場合、
aa
bbb
cccc
これを 3 つのファイルに分割する場合、望ましい出力は次のようになります。
aa
、bbb
そしてcccc
(3つの異なるファイル)
すでにsplit
コマンドを確認しましたが、ファイルサイズによってファイルがカットされるだけで、私が望んでいるものではありません。
自分でユーティリティを作成していない場合、使用できる標準ツールはありますか?
答え1
何か見落としていない限り、 switch をsplit
使用すると行ごとに分割されます-l
。
-l, --lines=NUMBER
put NUMBER lines per output file
それで
split -l 1 inputfile
あなたがしたいことをすればいいのです。
答え2
awk '{print > $0".txt" }' inputfile
入力ファイル内の一意の行ごとに、行の内容にちなんで名付けられたファイル (拡張子付き.txt
) が 1 つ作成されます。ただし、同時に開くファイルの制限に達すると、一部の実装が失敗することに注意してください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"