2014-10-08 27 views
0

我並排試圖貓多個文本文件側的最後2列。這些文件位於各種類型文件的目錄中。所有文件具有> 2列,但不能保證所有文件具有相同的列數。拼接最後一列從一種類型的多個文件

舉例來說,如果我有:

FILE1.TXT

1 a b J H 
2 b c E E 
3 c d L L 
4 d e L L 
5 e f O O 

FILE2.TXT

1 a b M B 
2 b c O E 
3 c d O E 

我想:

J H M B 
E E O E 
L L O E 
L L 
O O 

我已經最接近得到的是:

awk '{print $(NF-1), "\t", $NF}' *.txt 

這是我想要什麼差不多。

對於串聯,我想這樣here進行連結

pr -m -t one.txt two.txt 

回答

0
awk 'NR==FNR{a[NR]=$(NF-1)" "$NF;next}{print $(NF-1),$NF,a[FNR]}' file2.txt file1.txt 

測試:

> cat temp2 
1 a b M B 
2 b c O E 
3 c d O E 
> cat temp1 
1 a b J H 
2 b c E E 
3 c d L L 
4 d e L L 
5 e f O O 
> awk 'NR==FNR{a[NR]=$(NF-1)" "$NF;next}{print $(NF-1),$NF,a[FNR]}' temp2 temp1 
J H M B 
E E O E 
L L O E 
L L 
O O 
> 
+0

它似乎並沒有工作,如果文件的順序是逆轉。這是否與第一列的長度有關? – Lilo 2014-10-08 06:32:10

+0

文件與更少的行應該是第一位的。只有這樣才能起作用。 – user1939168 2014-10-08 09:29:31

0
join -a1 -a2 one.txt two.txt | cut -d' ' -f4,5,8,9 
相關問題