【问题标题】:Merge multiple csv files awk column-wise, no match逐列合并多个csv文件,不匹配
【发布时间】:2014-06-10 06:09:09
【问题描述】:

我敢肯定,这很简单,可能已经有人问过了,但我现在一直在寻找。很抱歉这个愚蠢的问题!

我想合并 多个 CSV 文件:

文件1

A, B
A, B
A, B

文件2

C
C
C

文件3

D
D
D

我想屈服

A, B, C, D
A, B, C, D
A, B, C, D

我真的很抱歉问这个问题。 不过,非常感谢你让我的生活更轻松。

【问题讨论】:

    标签: csv awk


    【解决方案1】:

    用粘贴(空格分隔)

    paste -d' ' file1 file2
    

    使用 awk

    awk '{s=$0;getline < "file2";print s,$0}' file1
    

    编辑需求变更:

    kent$  awk '{a[FNR]=a[FNR]?a[FNR]", "$0:$0}END{for(i=1;i<=FNR;i++)print a[i]}' f1 f2 f3
    A, B, C, D
    A, B, C, D
    A, B, C, D
    

    这里可以在f1 f2 f3...后面添加更多文件

    这里我没有使用getline,因为我不知道你有多少文件,如果足够多,我们可能会出现“打开文件过多”的问题。

    【讨论】:

    • 两者都不起作用; paste 不添加逗号(带 -d',' 前两个文件不在输出文件中),另一个命令像 'join' 一样加入文件。
    • @user3710638 它适用于您的原始问题!你改变了问题,当然它不会工作。如果我再给出一个答案,您再次更改您的要求,它将再次失败!看你在 8 分钟前改变了问题,我在 18 分钟前回答了!
    • 感谢您的回答,但如果您密切锁定我并没有改变我的问题,我只是澄清了它。它之前说过多个文件。总之,非常感谢。
    • “awk”代码能否适应组合数百个文件(例如,f1、f2、f3、...、f500)而无需写出所有文件名?
    猜你喜欢
    • 2015-12-22
    • 2020-07-22
    • 1970-01-01
    • 2018-04-07
    • 2011-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多