我有两个文件,我想在每行上找到共同的第一列并打印第一列和第一列。 file1.txt的第二列和file2.txt的第二列。
file1.txt
A10 Unix
A20 Windows
B10 Network
B20 Security
file2.txt
A10 RedHat
A21 Win2008
B11 Cisco
B20 Loadbalancing
结果:
file.txt
A10 Unix RedHat
B20 Security Loadbalancing
我尝试了下面的代码,但没有检索到正确的结果:
$ awk 'NR==FNR {a[$1]=$1; next} $1 in a {print a[$1], $0}' file1.txt file2.txt
答案 0 :(得分:2)
这是join
的标准用例,因为文件已按排序顺序排列。无需任何其他代码。
$ join file1 file2
A10 Unix RedHat
B20 Security Loadbalancing
答案 1 :(得分:1)
$ awk 'NR==FNR{a[$1]=$2;next} $1 in a{print $0, a[$1]}' file2 file1
A10 Unix RedHat
B20 Security Loadbalancing
答案 2 :(得分:0)
您可以使用以下awk
命令:
awk 'NR==FNR{a[$1]=$2} NR>FNR && $1 in a{print $1,a[$1],$2}' file1.txt file2.txt
在多行版本中有更好的解释:
# Number of record is equal to number of record in file.
# True as long as we are reading file1
NR==FNR {
# Stored $2 in an assoc array index with $1
a[$1]=$2
}
# Once we are reading file2 and $1 exists in array a
NR>FNR && $1 in a {
# print the columns of interest
print $1, a[$1], $2
}