0

3 つの入力 csv ファイルがあり、それぞれの形式は同じで、各ファイル内のレコードは相互に排他的です。

input1.csv  
input2.csv
input3.csv

上記のファイルを 1 つの出力ファイルにマージしたいと考えています。

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

この例では、入力ファイルに含まれる列は 1 つだけです。ただし、複数の列を持つこともできます。出力ファイルは 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 に答える