将文件拆分为多个小文件,以换行符分隔


13

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

aa
bbb
cccc

如果我要将其拆分为3个文件,则所需的输出将是:

aabbbcccc(在3个不同的文件中)

我已经检查了split命令,它仅按文件大小剪切文件,而不是我想要的文件。

如果我自己没有编写实用程序,是否有任何标准工具可以使用?


文件名应该是什么?
Rahul Patil

您要创建每一行的文件吗?我是对的吗?
Rahul Patil

Answers:


14

除非我缺少任何东西,否则split如果使用-lswitch 则按行分割:

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

所以

split -l 1 inputfile

应该做你想做的。


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

会在输入文件的每一行中以该行的内容命名(带有.txt扩展名)来创建一个文件。但是请注意,当达到并发打开文件的限制时,某些awk实现将失败。

要么

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

为输出文件编号。


您可能要在写入输出文件后关闭()输出文件,否则大多数awk实现都会遇到打开文件的最大数量限制。
斯特凡Chazelas

不知道..你能帮我吗?谢谢..
Rahul Patil

3
A=0
while IFS= read -r LINE ; do
  printf '%s\n' "$LINE" > newfile$A
  (( A++ ))
done < "$INPUTFILE"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.