将文本文件中的每行内容通过命令行分割成新的文本文件

5
我有一个包含30行文本的文本文件,我想按行分割它,使得每一行都在一个新的文本文件中。
我在命令行中使用了这个命令,但没有得到任何有用的输出,除了把原来的30行文件重命名为“xaa”:
split -l 1 mytextfile.txt

我这里做错了什么吗?


1
file mytextfile.txt 返回什么? - iruvar
它返回相同的文件,但重命名为xaa.txt。 - jxn
我原以为我应该得到30个新文本文件,每个文件包含一行文本? - jxn
@jenn file 是一个显示文件类型的实用工具。当你运行 file mytextfile.txt 时,file 将会打印出一行类似于 "mytextfile.txt: ASCII text, with CR line terminators" 的信息。1_CR 正在询问它对你的文件显示了什么。 - that other guy
显然,现在你已经发布了实际的命令,这个问题已经不相关了。有趣的是,你最初发布的命令 split -l 2 mytextfile.txt,几乎可以工作。 - that other guy
2个回答

7
你错误地使用了-l参数。你传入的值是每个文件块中要放置的行数。所以你现在将一个30行的文件分割成了……一个单独的30行文件。
你需要执行 split -l 1 mytextfile.txt

它对我起作用了。我创建了一个30行的文件,执行了split -l 1命令,然后它创建了文件xaaxbd - Mike Holt
我意识到问题出在我从CSV文件复制到文本文件。 - jxn
这是必需的:%s/^V^M/^V^M/g - jxn
每个文件的末尾都会出现一个新行,应该怎么做才能去掉它? - Saurabh Bhoomkar

2

尝试使用awk

cat  mytextfile.txt  |  awk '{ print $0 > "my_splittet_textfile_"NR".txt"}'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接