0

当使用以下命令加入它们时,我正在尝试基于第一列 348.csv 和 349.csv 合并 2 个文件

加入 -a1 -a2 -1 2 -2 2 348.csv 349.csv

没有得到正确的输出,即输出混乱。

猫 348.csv:

Timestamp                   BRM Servers 
                              348  
1/28/2013 02:00 AM PST        176  
1/28/2013 02:30 AM PST        150
1/28/2013 03:00 AM PST        140
1/28/2013 03:30 AM PST        100

猫 349.csv:

Timestamp                   BRM Servers
                               349  
1/28/2013 02:00 AM PST         99
1/28/2013 02:30 AM PST         115
1/28/2013 03:00 AM PST         101
1/28/2013 03:30 AM PST         78

预期如下:

Timestamp                   BRM Servers 
                             348  349 
1/28/2013 02:00 AM PST       176  99 
1/28/2013 02:30 AM PST       150  115 
1/28/2013 03:00 AM PST       140  101
1/28/2013 03:30 AM PST       100  78

并按顺序。

提前致谢

4

3 回答 3

0

尝试这个:

awk 'NR==FNR{i=NF<5?"__":$1$2$3$4;a[i]=$0;next} FNR==1{print}{i=NF<5?"__":$1$2$3$4}FNR>1&&i in a{print a[i],$NF}' file1 file2

用你的数据测试:

kent$  head f1 f2
==> f1 <==
Timestamp                   BRM Servers 
                              348  
1/28/2013 02:00 AM PST        176  
1/28/2013 02:30 AM PST        150
1/28/2013 03:00 AM PST        140
1/28/2013 03:30 AM PST        100

==> f2 <==
Timestamp                   BRM Servers
                               349  
1/28/2013 02:00 AM PST         99
1/28/2013 02:30 AM PST         115
1/28/2013 03:00 AM PST         101
1/28/2013 03:30 AM PST         78

kent$  awk 'NR==FNR{i=NF<5?"__":$1$2$3$4;a[i]=$0;next} FNR==1{print}{i=NF<5?"__":$1$2$3$4}FNR>1&&i in a{print a[i],$NF}' f1 f2
Timestamp                   BRM Servers
                              348   349
1/28/2013 02:00 AM PST        176   99
1/28/2013 02:30 AM PST        150 115
1/28/2013 03:00 AM PST        140 101
1/28/2013 03:30 AM PST        100 78
于 2013-02-04T16:38:04.070 回答
0

我假设您的文件是制表符分隔的。如果不是,“第 1 列”中的空格将使这项任务变得更加困难。

sed 1q 348.csv
join -t $'\t' -j 1 -o 0,1.2,2.2 <(sed 1d 348.csv) <(sed 1d 349.cvs)

给出制表符分隔的输出,如下所示:

Timestamp       BRM Servers 
        348     349  
1/28/2013 02:00 AM PST  176     99
1/28/2013 02:30 AM PST  150     115
1/28/2013 03:00 AM PST  140     101
1/28/2013 03:30 AM PST  100     78
于 2013-02-04T17:37:23.780 回答
0

我假设您的文件是制表符分隔的

join -a1 -a2 -1 1 -2 1 -t $'\t'  348.csv 349.csv
于 2013-02-04T17:44:06.293 回答