将文件分割成多个小文件,用换行符分隔

将文件分割成多个小文件,用换行符分隔

是否有一个实用程序可以按换行符分割文件?例如,如果文件包含以下几行,

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"

相关内容