连接一个类型的多个文件的最后一列

时间:2014-10-08 05:56:53

标签: shell awk

我试图并排捕获多个文本文件的最后两列。这些文件位于各种类型文件的目录中。所有文件都有> 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

2 个答案:

答案 0 :(得分:0)

join -a1 -a2 one.txt two.txt | cut -d' ' -f4,5,8,9

答案 1 :(得分: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 
>