2017-07-20 11 views
1

awkでこれを行う可能性は高いですが、どうやってそれを行うのか分かりません。空白行をスキップしながら、異なるファイルの列を連結する

私は、次の2タブのみ\nが含まれている空白行があるファイルは、分離があるとします。

FILE1:

A 1 4 
B 2 5 
C 3 6 

D 7 10 
E 8 11 
A 9 12 

FILE2:

E 13 16 
F 14 17 
G 15 18 

H 19 22 
I 20 23 
J 21 24 

私は生成したいがファイル1の最初の2つの列とファイル2の3番目の列と、次にファイル1の3番目の列の連結に対応する新しいファイル:

最終的なファイル:

A 1 16 4 
B 2 17 5 
C 3 18 6 

D 7 22 10 
E 8 23 11 
A 9 24 12 

注記最終的なファイルには、それは空白行が空白に保たれるべきであることが重要だ、と何のタブがそこに挿入されるべきではない、ということ。

答えて

1

シンプルペースト + awkの組み合わせ:

paste file1 file2 | awk '!NF{ print "" }NF{ print $1,$2,$6,$3 }' 

出力:

A 1 16 4 
B 2 17 5 
C 3 18 6 

D 7 22 10 
E 8 23 11 
A 9 24 12 
+0

私は間違っていない場合は、空白行は、タブが含まれています?これらを削除するにはsedにパイプする必要があるかもしれません。 – flu

+0

このコマンドを試しましたが、出力ファイルに空白行のタブが含まれています –

+0

@FilipeAleixo。私はいくつかの魔法を追加しました。最後の修正を確認してください – RomanPerekhrest

1
awk 'NR==FNR{a[NR]=$3;next} NF{$3=a[FNR] OFS $3} 1' file2 file1 
関連する問題