当前位置: 首页 > 知识库问答 >
问题:

比较两个文件并打印匹配行与匹配后的一些行

翟弘
2023-03-14

我有两个文件file1。txt和file2。txt。

文件1。文本

DS496218    40654   42783   
DS496218    40654   42783
DS496218    40654   42783

file2.txt

###
DS496108    ena gene    99942   102567  .   -       
DS496128    ena mRNA    99942   102567  .   -       
DS496118    ena three_prime_UTR 99942   100571  
###
DS496218    ena gene    40654   42783   .   -       
DS496108    ena mRNA    99942   102567  .   -       
DS496108    ena three_prime_UTR 99942   100571      
###
DS496128    ena gene    99942   102567  .   -       
DS496133    ena mRNA    99942   102567  .   -       
DS496139    ena three_prime_UTR 99942   100571  
###

我想匹配文件1的第1、2和3列。带有文件2第1、4和5列的txt。txt。如果匹配,则将匹配行与以下行一起打印,直到###,但不要打印##。我用“awk”命令试过了

awk -F'\t' 'NR==FNR{c[$1$2$3]++;next};c[$1$4$5] > 0' file1.txt file2.txt > out.txt. 

共有1个答案

唐裕
2023-03-14

在没有看到预期输出的情况下,这只是一个猜测,但听起来这正是您想要的:

awk '
NR==FNR { a[$1,$2,$3]; next }
($1,$4,$5) in a { found=1 }
/^###/ { found=0 }
found
' file1 file2
 类似资料:
  • 嗨,我有两个自定义数组列表,我想从一个数组列表中删除与第二个数组列表匹配的类似项。

  • 给定两个csv文件: 我想创建一个新的csv文件,我们将调用UpdatedList.csv,它具有来自File1.csv的每个条目减去SKU在File1.csv和File2.csv.的任何行 下面的代码会做我想做的,但是我相信有一个更有效的方法。没有循环我怎么能做到这一点?我的代码如下。

  • 我有两份清单<代码>列表1包含一些城市。 列表2包含子列表。每个子列表包含一个人已经访问过的国家(一个子列表=一个人访问过的国家)。在这个例子中,Person1去了罗马、阿姆斯特丹和维也纳,Person2去了阿姆斯特丹、巴塞罗那和米兰。。。 我想知道有多少人已经去过第一个名单上的国家。不应重复计算。因此,如果人员1已经从列表1前往两个国家,则只应计算一次。 我想用JavaStreams实现这个。有

  • 问题内容: 我在Pandas中有这个DataFrame(): 我想检查中是否存在来自另一个数据框()的任何行(所有列)。这里是: 我尝试使用一次搜索一行。我这样做是这样的: 但我收到此错误消息: 我也尝试使用: 但我收到此错误消息: 我也这样尝试过: 但是我到处都是,这是不正确的: 通过将其与另一个数据框的行进行比较,是否有可能在数据框中搜索一组行? 编辑:如果这些行中也存在行,是否可以删除行?

  • 本文向大家介绍grep 仅打印行的匹配部分,包括了grep 仅打印行的匹配部分的使用技巧和注意事项,需要的朋友参考一下 示例