awk – 在单独的文件中匹配数据
发布时间:2020-12-13 23:09:43 所属栏目:Linux 来源:网络整理
导读:我似乎有几个这类问题,并且真正试图在我自己的基础上解决这个问题而没有成功. 我有两个数据文件;我想比较它们的第一个字段,并从输出文件中第一个文件的匹配条目旁边的第二个文件中打印该行.保持文件1中的列表顺序很重要,包括没有匹配的行.这些文件是制表符分
我似乎有几个这类问题,并且真正试图在我自己的基础上解决这个问题而没有成功.
我有两个数据文件;我想比较它们的第一个字段,并从输出文件中第一个文件的匹配条目旁边的第二个文件中打印该行.保持文件1中的列表顺序很重要,包括没有匹配的行.这些文件是制表符分隔值,但我可以根据需要更改它们(尽管数据中使用了逗号). FILE1.TXT 37600 39219 32887 01262 69241 00361 34180 42385 69245 FILE2.TXT 37600 GEAR PUMP 1 32887 MOTOR,480V 1 34180 BRACKET 2 00361 WASHER 4 42385 SCREW 8 期望的输出文件 37600 GEAR PUMP 1 39219 32887 MOTOR,480V 1 01262 69241 00361 WASHER 4 34180 BRACKET 2 42385 SCREW 8 69245 到目前为止,这是我的最大努力,但它会导致一个空文件. awk NR==NFR{a[$1];next}$1 in a {print $0} file1.txt file2.txt > outfile.txt 任何帮助将不胜感激. 解决方法
你很亲密,这个awk应该这样做.
awk 'FNR==NR {a[$1]=$0;next} a[$0] {$0=a[$0]}1' file2 file1 37600 GEAR PUMP 1 39219 32887 MOTOR,480V 1 01262 69241 00361 WASHER 4 34180 BRACKET 2 42385 SCREW 8 69245 我将file2存储在数组中,其中$1作为索引. 您也可以写这个,以标记应该比较的第1列: awk 'FNR==NR {a[$1]=$0;next} a[$1] {$0=a[$1]}1' file2 file1 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |