【问题标题】:How to find first three digits matching pattern from a single column between two text files [closed]如何从两个文本文件之间的单列中查找前三位匹配模式[关闭]
【发布时间】:2015-08-03 10:05:59
【问题描述】:

我想在两个文本文件之间匹配第二列 ($2) 的前三位数字(例如:132******)。有人可以建议我执行此操作的脚本吗?

输入文件1:

9 73316991 73352391 DEL 99 35401
9 96058269 96059400 DEL 99 1132
9 132186937 132206288 DUP 99 19352
9 138338172 138339132 DEL 99 961

输入文件2:

9 132185894 132209127 DUP 99 23234      
9 140495212 140496044 DEL 99 833 
9 136625162 136626293 DEL 99 1132

输出文件3:

9 132185894 132209127 DUP 99 23234

【问题讨论】:

  • 我们不会为您代劳。在你的 bash 中输入 man grep 看看是否是你需要的。

标签: python regex bash shell awk


【解决方案1】:
awk '{key=substr($2,1,3)} NR==FNR{a[key];next} key in a' file1 file2

【讨论】:

  • 非常感谢!另外,是否可以在五个不同的文件中搜索相同类型的模式作为输入?这真的很有帮助。
  • “有可能吗?”的答案总是“是”。
【解决方案2】:

你可以像这样使用awk

awk 'FNR==NR{a[substr($2,1,3)];next} substr($2,1,3) in a' file1 file2
9 132185894 132209127 DUP 99 23234

【讨论】:

  • 非常感谢!另外,是否可以在五个不同的文件中搜索相同类型的模式作为输入?这真的很有帮助。
  • 有可能,但您不能通过评论添加新问题。如果此答案有效,那么您可以通过单击我的答案左上角的勾号将答案标记为已接受。
  • 您是否尝试在 file1 file2 后面再添加 3 个文件名?
猜你喜欢
  • 1970-01-01
  • 2022-01-14
  • 1970-01-01
  • 2022-12-17
  • 2015-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多