我浏览了以下问题的答案,但无法获得预期的输出,如下所示。
比较两个文件的第一列,如果第一列匹配,则打印第二个文件的整行
文件1
CLASS|124655
CLASS|124656
CLASS|124657
CLASS|124658
文件2
CLASS|124655|STEVE|SMITH||
CLASS|124656|ROGERS|KNIGHT||
CLASS|124657|MITCHELL|BRADFORD||
CLASS|124657||||1236536
CLASS|124658|NORMAN|JONES||
CLASS|124658||||1236539
CLASS|124665|JEFF|JONES||
CLASS|124665||||1236556
预期产出
CLASS|124655|STEVE|SMITH||
CLASS|124656|ROGERS|KNIGHT||
CLASS|124657|MITCHELL|BRADFORD||
CLASS|124657||||1236536
CLASS|124658|NORMAN|JONES||
CLASS|124658||||1236539
我尝试了 grep -f file1 file2 但它被内核杀死了,并且处理时间太长。文件1和文件2都有超过1m的记录。
答案1
一个awk
解决方案是这样的:
$ awk -v FS="|" 'NR==FNR {get[$1"|"$2]++; next} get[$1"|"$2]' f1.txt f2.txt
不知道这是否适用于 100 万条记录。