【发布时间】:2017-03-10 23:23:57
【问题描述】:
我有一个非常大的 CSV 文件 input.csv,看起来像这样:
https://www.youtube.com/watch?v=9t5V_sMVN5I, 0.66, 0.7, 89
https://www.youtube.com/watch?v=9t5V_sMVN5I, 0.56, 0.98, 87
https://www.youtube.com/watch?v=9t5V_sMVN5I, 0.66, 0.7, 89
https://www.youtube.com/watch?v=b7kKTSVbfdA, 0.56, 0.98, 87
https://www.youtube.com/watch?v=b7kKTSVbfdA, 0.66, 0.7, 89
https://www.youtube.com/watch?v=b7kKTSVbfdA, 0.56, 0.98, 87
https://www.youtube.com/watch?v=b7kKTSVbfdA, 0.66, 0.7, 89
我正在尝试根据第一列中的 URL 将该文件的内容(所有列)保存到单独的文件中。
所以上面sn-p的输出应该是两个文件:
https://www.youtube.com/watch?v=9t5V_sMVN5I, 0.66, 0.7, 89
https://www.youtube.com/watch?v=9t5V_sMVN5I, 0.56, 0.98, 87
https://www.youtube.com/watch?v=9t5V_sMVN5I, 0.66, 0.7, 89
和
https://www.youtube.com/watch?v=b7kKTSVbfdA, 0.56, 0.98, 87
https://www.youtube.com/watch?v=b7kKTSVbfdA, 0.66, 0.7, 89
https://www.youtube.com/watch?v=b7kKTSVbfdA, 0.56, 0.98, 87
https://www.youtube.com/watch?v=b7kKTSVbfdA, 0.66, 0.7, 89
要根据第一列拆分此文件,我使用的是 awk:
awk -F, '{print >> ($1".csv")}' input.csv
但是,由于此错误,我无法根据 URL 字段保存到任何文件:
awk: cmd. line:1: (FILENAME=input.csv FNR=1) fatal: can't redirect to ` https://www.youtube.com/watch?v=9t5V_sMVN5I.csv' (No such file or directory)
使用 URL 样式的字符串作为文件名保存文件显然会导致一些错误。许多“/”一定是导致文件路径出现问题的原因。
有没有办法使用 awk 保存基于第 1 列 ($1) 的内容,但是这样的输出文件的命名不同,可能遵循编号 1..N 之类的序列?另一种选择是用一些唯一标识符替换每个 URL,然后对其进行拆分——但是我还不能编写脚本。
任何帮助将不胜感激!
【问题讨论】:
-
@Sundeep 完美!我不知道如何拆分嵌套在 awk 命令中的字符串。请将此添加为答案,以便我接受!