如何根据唯一的列值对 csv 文件进行多次分割?

如何根据唯一的列值对 csv 文件进行多次分割?

我有一个包含多列的 csv 文件。这是我所坚持的一个例子。以下是示例输入数据:

9,-54,18205,28,0,1517400128,2353,0,0,0,0,551
9,-54,18207,28,0,1517400128,2354,0,0,0,0,551
10,-48,18216,28,0,1517400128,2353,0,0,0,0,551
9,-54,18217,28,0,1517400128,2356,0,0,0,0,551
13,-54,18223,28,0,1517400128,2353,0,0,0,0,551

我想根据第 1 列中的唯一值拆分数据,然后根据第 7 列中的唯一值进一步拆分结果。目前,我尝试通过首先根据第 1 列拆分工作表来实现此目的,然后我从目录中读取生成的 csv 文件,将其存储在输出 txt 文件中,然后进一步将输出 txt 文件中的值作为变量并运行 awk 脚本以进一步拆分文件。但不知何故,第二次分裂并没有按照预期发生。以下是我到目前为止所做的:

awk -F\, '{print > $7".csv"}' $dir/../testfile.csv

ls -R | grep "\.csv$" > testfile.txt

while IFS= read -r a \n b \n c; do
    awk -F\, '{print > $1".csv"}' $dir/$a
    awk -F\, '{print > $1".csv"}' $dir/$b
    awk -F\, '{print > $1".csv"}' $dir/$c
done < testfile.txt

请帮我找出这里的问题。这必须是在外壳中。

答案1

我想了一下,您最终需要该命令执行以下输出:

awk -F, '{print >$1"_"$7".csv"}' infile

相关内容