如何基于文件名合并2个CSV文件

时间:2019-05-29 09:48:40

标签: bash

我有2个CSV文件:

1234ABC.stats.csv
name,value1,value1

1234ABC.csv
value2,value2,value2

这两个文件中只有1行。

它们都没有标题,并且位于同一目录中,没有其他文件类型。

如何将第二个文件中的内容添加到第一个文件的行尾?

所需的输出:

name,value1,value1,value2,value2,value2

3 个答案:

答案 0 :(得分:1)

编辑修复了一个错误-缺少; $_)我愿意做的

perl -e  'print join q(,), map { chomp; $_ } <>; print qq(\n)'  *.csv

<>是所有输入文件中所有行的列表。 chomp删除换行符,然后join添加逗号。

如果结果的顺序与您想要的不同,则可能需要手动指定文件,而不是仅使用*.csv

或者您可以在文本编辑器:D中手动完成此操作。

答案 1 :(得分:1)

尝试awk脚本:

awk '{printf("%s",$0)}NR==FNR{printf(",")}' 1234ABC.stats.csv 1234ABC.csv

答案 2 :(得分:1)

尝试一下:

paste -d, 1234ABC.stats.csv 1234ABC.csv 

循环遍历本地目录中的多个文件

#!/bin/bash
for statsfile in *.stats.csv; do
   paste -d, "$statsfile" "${statsfile//.stats/}" > "new_${statsfile//.stats/}"
done