0

我试图通过这个谜题来理解如何在 AWK 中读取许多输入文件“如何打印文件 1 中的第一列和文件 2 中的第二列?

输入

$ cat test1 
1   4
2   5
3   6
$ cat test2
a   b
c   d   
e   f

目标

$ awk **ANSWER**
1   b
2   d
3   f
4

2 回答 2

3
awk 'NR==FNR{a[NR]=$1;next} {print a[FNR], $2}' file1 file2
于 2013-09-03T22:37:42.843 回答
3

Ed 的解决方案很好,但由于awk通常存在于生态系统中,因此最好使用其他可用工具:

paste test[12] | awk '{print $1, $4}'

这应该扩展到更大的文件,因为合理的实现paste不会test1在产生任何输出之前将所有内容读入内存。(这不太可能是一个实际问题,但在美学上是令人愉悦的。)

于 2013-09-04T12:13:43.377 回答