unix - 比较列

标签 unix awk

我有两个文件:

文件1

1 
2 
3
4
5

文件2

a     0     1    h    f  
b     0     3    h    f
c     0     8    h    f
d     0     5    h    f

我想比较 file1 和 file2 的第 3 列,并像这样打印 file2 的整行

a     0     1     h    f
b     0     3     h    f 
d     0     5     h    f

我尝试使用awk,但我正在打印column3:

awk 'NR == FNR {f2[$3]=$1; next} $1 in f2{print f2[$1],$1}' file2 file1

如何打印 file2 中的整行?

最佳答案

如果你先给出file1,会容易得多:

$ awk 'NR==FNR{a[$1];next}$3 in a' file1 file2
a     0     1    h    f
b     0     3    h    f
d     0     5    h    f

这样,如果字段三中的值在 file1 中,您就可以轻松打印 file2 中的整行。 awk 中的默认 block 是 {print $0},因此可以从 a{print $0} 中的 $3 中省略。

关于unix - 比较列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15817568/

相关文章:

c++ - 使用 C++ 以最快的方式在超大文本文件 (10 GB) 中搜索多个单词

c - 如何编写从 Unix 终端附加/分离的 C 程序?

linux - 如何使用 awk 从文件中删除一行并按某个字符串过滤

linux - 如何提取2个xml标签之间的字符串?

perl - 在 perl 中使用 bash 命令

Unix 上的 C++ : Differences in threading libraries?

linux - 目录名称 - 去除空格和其他格式

awk - 根据第一列比较两个文件,打印一个文件的唯一部分

unix - 如何在unix中查找最近一小时内创建的文件

Bash - 基于以毫秒为单位的时间戳搜索