【发布时间】:2022-01-07 06:52:25
【问题描述】:
我有一个如下所示的 CSV 文件:
1,apple
2,orange
3,orange
4,pear
5,banana
CSV 文件有数千行。
现在我想将它拆分成数千个单独的 .txt 文件。
每个 .txt 文件都应以逗号前的数字命名,并且 .txt 文件的内容应包含逗号后的单词,如下所示:
1.txt contains: apple
2.txt contains: orange
3.txt contains: orange
4.txt contains: pear
5.txt contains: banana
等等。
有一个 similar question here 询问如何使用 bash 脚本执行此操作,但我想使用命令行(awk 或类似的)执行此操作,并且使用 awk 对该问题的当前答案无法正常工作。
【问题讨论】:
-
This "awk -F, '{print $2 > $1 ".txt"}' file.csv " 来自类似问题的命令运行良好,我尝试使用您给定的“示例”输入文件,它给出了所需的输出文件(带有文件名)及其内容。
-
@c_bfx 这很奇怪,因为当我尝试时它会给出这个错误
awk: syntax error at source line 1 context is {print $2 > $1 >>> ".txt" <<< awk: illegal statement at source line 1。我在 Mac 上。那会有什么不同吗? -
试试:
awk -F, '{print $2 > ($1 ".txt")}' file.csv -
成功了!谢谢!如果您将其添加为答案,我将接受它作为解决方案。或者如果你不想,我会为你做。
-
第一列中的这些数字是唯一的吗,或者您是否可以在第一列中有两行编号为
1?您的 CSV 是否有标题行(如果有,请在您的示例中显示)?
标签: awk command-line terminal