如何解决将行保留在单独的列表中
我有两个文件
文件1:
##HEADER#########################
##HEADER#########################
1 69078 70017 + .
1 324295 324394 + .
1 324428 325605 + .
1 327735 328214 + .
1 367646 368605 + .
1 621093 622042 + .
1 664485 665108 + .
1 721405 721918 + .
1 762080 762571 + .
1 861308 861407 + .
1 865533 865718 + .
1 866395 866494 + .
和文件2:
1 69078 70017
1 324295 324394
1 762080 762571
1 861308 861407
1 865533 865718
我想在文件1中保留与文件2中的第2列和第3列匹配的行。产生此输出(包括将标题保留在文件1中):
##HEADER#########################
##HEADER#########################
1 69078 70017 + .
1 324295 324394 + .
1 762080 762571 + .
1 861308 861407 + .
1 865533 865718 + .
非常感谢!
我尝试使用此代码:
join --header -1 2 -2 2 file1 file2 > output
但是它不能识别多个标题行,并且会创建多个列,而不仅仅是显示的列。
解决方法
您可以使用以下awk:
awk '{key = $2 OFS $3} NR == FNR{seen[key]; next} FNR <= 2 || key in seen' file2 file1
##HEADER#########################
##HEADER#########################
1 69078 70017 + .
1 324295 324394 + .
1 762080 762571 + .
1 861308 861407 + .
1 865533 865718 + .
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。