Awk 比较两个文件,按第一个文件的顺序打印第二个文件的行
我有两个文件 文件1:Awk 比较两个文件,按第一个文件的顺序打印第二个文件的行,awk,Awk,我有两个文件 文件1: alfa numbers numbers vita numbers numbers gama numbers numbers delta numbers numbers epsilon numbers numbers zita numbers numbers ... 文件2: 'zita' keepnumbers keepnumbers keepnumbers 'gama' keepnumbers keepnumbers kee
alfa numbers numbers
vita numbers numbers
gama numbers numbers
delta numbers numbers
epsilon numbers numbers
zita numbers numbers
...
文件2:
'zita' keepnumbers keepnumbers keepnumbers
'gama' keepnumbers keepnumbers keepnumbers
'misc' keepnumbers keepnumbers keepnumbers
'alfa' keepnumbers keepnumbers keepnumbers
...
我想
打印文件2的行
其中第一个单词(在第一列中)
与文件1的第一个字匹配(在第一列中),但保持第一个文件的顺序。
输出应该如下所示
'alfa' keepnumbers keepnumbers keepnumbers
'gama' keepnumbers keepnumbers keepnumbers
'zita' keepnumbers keepnumbers keepnumbers
我已经试过了
awk 'NR==FNR{a[$1]++;next}a[$1]' file1 file2 > file3
但文件3中的顺序与文件2类似。
此外,awk点击引号符号“有没有办法忽略它并只读取引号内的名称?”如果您已接近,请尝试
awk -v q="'" 'NR==FNR{a[$1]=$0;next}{$1=q $1 q}$1 in a{print a[$1]}' file2 file1 > file3
- 转义单引号很烦人,我们可以定义一个var
q
- 如果您想对file1进行排序,可以将file2保存在数组中,然后使用file1进行检查
- 将数组另存为
,以便我们在文件2中有行,以便以后打印a[$1]=$0