【问题标题】:How to merge 2 CSV files based on filename [duplicate]如何根据文件名合并2个CSV文件[重复]
【发布时间】:2019-05-29 09:48:40
【问题描述】:

我有 2 个 CSV 文件:

1234ABC.stats.csv
name,value1,value1

1234ABC.csv
value2,value2,value2

这两个文件都只有 1 行。

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

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

想要的输出:

name,value1,value1,value2,value2,value2

【问题讨论】:

  • 您正在搜索paste ($ paste -d, file1 file2)
  • 谢谢,如果我有多个文件名相似的文件,如何循环使用粘贴?
  • man paste:您只需paste -d, file1 file2 file3 file4 file5 ... file10000。 linux 工具的手册页包含大量信息。看看它们真的很方便。

标签: bash


【解决方案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  

【讨论】:

  • 如果我有多个文件名相似的文件,如何使用粘贴循环遍历它们?
  • 我已经扩展了我的解决方案。
【解决方案2】:

试试 awk 脚本:

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

【讨论】:

    【解决方案3】:

    编辑修复了一个错误——; $_ 不见了)我会做的副手

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-11-08
      • 2017-12-19
      • 1970-01-01
      • 2019-08-14
      • 2021-10-24
      • 1970-01-01
      • 1970-01-01
      • 2020-09-23
      • 1970-01-01
      相关资源
      最近更新 更多