テキストファイルの行を別々のファイルに分割する

テキストファイルの行を別々のファイルに分割する

次のテキストファイルがあります。

foo
bar
zip
rar
tar

次のように各行に新しいテキストファイルを作成するには、OSXでbashスクリプトを使用する必要があります。

cat text1.txt
foo
cat text2.txt
bar
cat text3.txt
zip
cat text4.txt 
rar
cat text5.txt
tar

ベストアンサー1

あなたはそれを使用することができますcsplit。出力ファイル名の点ではわずかに柔軟性がなく(接尾辞ではなく接頭辞のみを指定できます)、フラグメントの数を計算するには最初のパスが必要であることを除いて、うまくいきます。

csplit -f text -- input.txt '//' "{$(wc -l input.txt)}"
for x in text[0-9]*; do mv -- "$x" "$x.txt"; done

GNUバージョン(OSXバージョンではない)には、両方の問題を解決する拡張機能があります。

csplit -b '%d.txt' -f text -- input.txt '//' '{*}'

またはcsplit、あまり柔軟性がない場合は、awkを使用できます。

awk '{filename = sprintf("text%d.txt", NR); print >filename; close(filename)}' input.txt

おすすめ記事