您好,我有一个包含重复数据的文件:
ENGLAND
ENGLAND
ENGLAND
JAPAN
JAPAN
JAPAN
JAPAN
AMERICA
AMERICA
AMERICA
第二个文件包含两列唯一数据(由" ="分隔),第一列被视为关键字:
ENGLAND=LONDON
JAPAN=TOKYO
AMERICA=WASHINGTON DC
AUSTRALIA=SYDNEY
IRELAND=DUBLIN
我试图找出如何使用第一列作为匹配键输出第二个文件的第二列。输出应为:
LONDON
LONDON
LONDON
TOKYO
TOKYO
TOKYO
TOKYO
WASHINGTON DC
WASHINGTON DC
WASHINGTON DC
我尝试在bash中使用第一个文件作为数组,并使用cat作为搜索功能将第二个文件中的cat用管道传输到grep中。输出并不等同于数组的多个实例。我认为awk使用数组有一种方法,但是我在过去几天里无法弄明白。
答案 0 :(得分:1)
您可以使用此awk命令:
-F= # use = as input field separator
NR == FNR { # While processing the 2nd file
a[$1] = $2 # store the second field by the first in an array a
next # move to next record
}
{ # while processing the 1st file
print a[$1] # print array value (Capital) from array for key=$1
}
工作原理:
{{1}}
答案 1 :(得分:1)
使用sed:
sed -f <(sed 's|\(.*\)=\(.*\)|s/\1/\2/|' file2) file1
输出:
LONDON LONDON LONDON TOKYO TOKYO TOKYO TOKYO WASHINGTON DC WASHINGTON DC WASHINGTON DC