0

我有 3 个输入 csv 文件,每个文件都具有相同的格式,并且每个文件中的记录都是互斥的。

input1.csv  
input2.csv
input3.csv

我想将上述文件合并到一个输出文件中。

cat input1.csv input2.csv inpput3.csv > output.csv

要求 -output.csv文件必须有一个附加列,该列将包含针对每一行的文件名,指示包含该行的输入文件。

例子

input1.csv      input2.csv      input3.csv
----------      ----------      ----------
123             abc             i              
456             def             ii
789             ghi             iii

output.csv
----------
123      input1.csv
456      input1.csv
789      input1.csv
abc      input2.csv
def      input2.csv
ghi      input2.csv
i        input3.csv
ii       input3.csv
iii      input3.csv

在示例中,我的输入文件仅包含一列。但它也可以有多个列。输出文件是一个 csv 文件。所有文件中的分隔符都是 TAB - \t

4

1 回答 1

4

让你开始的东西:

$ awk '{print $0, FILENAME}' f{1..3}
123 f1
456 f1
789 f1
abc f2
def f2
ghi f2
i f3
ii f3
iii f3

或者如果您有多个列

$ cat f1
123  000
456  111
789  222

$ awk '{for (i=1; i<=NF;i++)print $i, FILENAME}' f{1..3}
123 f1
000 f1
456 f1
111 f1
789 f1
222 f1
abc f2
def f2
ghi f2
i f3
ii f3
iii f3

输出的格式留作练习......

于 2013-06-26T14:33:55.573 回答