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

あなたのファイルはタブで区切られていると思います。そうでない場合、「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 に答える
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 に答える