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


13

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

aa
bbb
cccc

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

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

私はすでにsplitコマンドをチェックしました、それはファイルサイズでファイルをカットするだけで、私が望むものではありません。

自分でユーティリティを書いていない場合、使用する標準ツールはありますか?


filenameはどうあるべきですか?
ラーフル・パティル

各行のファイルを作成しますか?私は正しいですか?
ラーフル・パティル

回答:


14

私が何かを逃していない限り、スイッチsplitを使用すると行ごとに分割されます-l

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

そう

split -l 1 inputfile

あなたがしたいことをする必要があります。


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

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

または

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

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


出力ファイルが書き込まれた後にclose()したい場合があります。そうしないと、ほとんどのawk実装で最大オープンファイル数制限に達してしまいます。
ステファンシャゼル

それに気づかないで..あなたは私のためにそれをすることができますか?ありがとう..
ラーフルパティル

3
A=0
while IFS= read -r LINE ; do
  printf '%s\n' "$LINE" > newfile$A
  (( A++ ))
done < "$INPUTFILE"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.