以下の4つのCSVファイルがあります。行の最初のセルが一致する各行に対してファイル1から3までの列を追加し、新しい行を作成して追加しようとします。
ファイル1:
N,Mon,Tue,Wed
1,A,B,C
2,D,E,F
3,I,J,X
ファイル2:
N,Mon,Tue,Wed
3,D,E,F
5,O,P,q
1,D,E,K
ファイル3
N,Mon,Tue,Wed
2,B,E,J
6,L,D,O
3,I,J,B
私の出力は次のようになります
N, Mon, Tue, Wed, Mon, Tue, Wed, Mon, Tue, Wed
1, A, B, C, D, E, F , , ,
2, D, E, F, , , , B, E, J
3, I, J, K, D, E, F, I, J, B
5, , , , O, P, q, , ,
6, , , , , , , L, D, O
Client Name,Monday 08/18,Tuesday 08/19,Wednesday 08/20,Thursday 08/21,Friday 08/22,Saturday 08/23,Sunday 08/24,Monday 08/25
ns2.advancemags.com->/var,Successful Full FS_UNIX_Mon_B Synthetic_Full 0B; ,,,,,,,Successful Full FS_UNIX_Mon_B Synthetic_Full 0B;
ns2.advancemags.com->/usr,Successful Full FS_UNIX_Mon_B Synthetic_Full 0B; ,,,,,,,Successful Full FS_UNIX_Mon_B Synthetic_Full 0B;
ns2.advancemags.com->/,Successful Full FS_UNIX_Mon_B Synthetic_Full 0B; ,,,,,,,Successful Full FS_UNIX_Mon_B Synthetic_Full 0B;
ns2.advancemags.com->/boot,Successful Full FS_UNIX_Mon_B Synthetic_Full 0B; ,,,,,,,Successful Full FS_UNIX_Mon_B Synthetic_Full 0B;
ns3.advancemags.com->/boot,,Successful Full FS_UNIX_Tue_C Synthetic_Full 0B; ,,,,,,
ns3.advancemags.com->/,,Successful Full FS_UNIX_Tue_C Synthetic_Full 0B; ,,,,,,
ns3.advancemags.com->/usr,,Successful Full FS_UNIX_Tue_C Synthetic_Full 0B; ,,,,,,
答え1
Bashでの関数の定義
function hsort {
head -n +1 "$1" ; sort <(tail -n +2 "$1");
}
それから
join -a1 -a2 -t, -o0,1.2,1.3,1.4,1.5,1.6,1.7,2.2,2.3,2.4 \
<(join -a1 -a2 -t, -o0,1.2,1.3,1.4,2.2,2.3,2.4 <(hsort file1) <(hsort file2)) \
<(hsort file3) | sed 's/,/, /g'
与える
N, Mon, Tue, Wed, Mon, Tue, Wed, Mon, Tue, Wed
1, A, B, C, D, E, K, , ,
2, D, E, F, , , , B, E, J
3, I, J, X, D, E, F, I, J, B
5, , , , O, P, q, , ,
6, , , , , , , L, D, O
[注:file2D,E,K
の1行目の内容は、D,E,F
目的の出力に表示されているものとは異なります。 ]
4つのファイルに拡張するのは簡単です。
join -a1 -a2 -t, -o0,1.2,1.3,1.4,1.5,1.6,1.7,2.2,2.3,2.4,2.5,2.6,2.7 \
<(join -a1 -a2 -t, -o0,1.2,1.3,1.4,2.2,2.3,2.4 <(hsort file1) <(hsort file2)) \
<(join -a1 -a2 -t, -o0,1.2,1.3,1.4,2.2,2.3,2.4 <(hsort file3) <(hsort file4)) |
sed 's/,/, /g'
扱うもっと4つ以上のファイルには追加の接続レベルが必要で、素早く見苦しくなり始めます。この場合、このアプローチはお勧めできません。