如何从两个文本文件之间的单列中查找前三位匹配模式[关闭]
Posted
技术标签:
【中文标题】如何从两个文本文件之间的单列中查找前三位匹配模式[关闭]【英文标题】: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
看看是否是你需要的。
【参考方案1】:
awk 'key=substr($2,1,3) NR==FNRa[key];next key in a' file1 file2
【讨论】:
非常感谢!另外,是否可以在五个不同的文件中搜索相同类型的模式作为输入?这真的很有帮助。 “有可能吗?”的答案总是“是”。【参考方案2】:你可以像这样使用awk
:
awk 'FNR==NRa[substr($2,1,3)];next substr($2,1,3) in a' file1 file2
9 132185894 132209127 DUP 99 23234
【讨论】:
非常感谢!另外,是否可以在五个不同的文件中搜索相同类型的模式作为输入?这真的很有帮助。 有可能,但您不能通过评论添加新问题。如果此答案有效,那么您可以通过单击我的答案左上角的勾号将答案标记为已接受。 您是否尝试在 file1 file2 后面再添加 3 个文件名?以上是关于如何从两个文本文件之间的单列中查找前三位匹配模式[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
常用算法3 - 字符串查找/模式匹配算法(BF & KMP算法)