首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果在字段中找到匹配项,awk将删除行

如果在字段中找到匹配项,awk将删除行
EN

Stack Overflow用户
提问于 2016-03-17 18:47:17
回答 2查看 548关注 0票数 1

如果在file2中找到匹配项,我将尝试删除file1中的一行。file2中的匹配将位于-之前的特定字段$5中。下面的awk没有指定要搜索的字段,而是运行,希望是一个开始。谢谢:)。

file1

代码语言:javascript
复制
AGRN
ABL
SCN1A

file2

代码语言:javascript
复制
chr1    955543  955763  chr1:955543-955763  AGRN-6|gc=75
chr1    957571  957852  chr1:957571-957852  AGRN-7|gc=61.2
chr1    970621  970740  chr1:970621-970740  BCR-8|gc=57.1
chr1    976035  976270  chr1:976035-976270  BCR-9|gc=74.5  

期望输出(在file1中删除了AGRN)

代码语言:javascript
复制
chr1    970621  970740  chr1:970621-970740  BCR-8|gc=57.1
chr1    976035  976270  chr1:976035-976270  BCR-9|gc=74.5 

awk

代码语言:javascript
复制
awk '!/file1/' file2
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-17 18:48:59

为此,请使用grep

代码语言:javascript
复制
grep -vFf file1 file2

-f从file1读取搜索模式,-v否定匹配,意思是如果file1中的模式之一匹配,则从file2中删除行。-F使用固定字符串进行搜索,而不是正则表达式模式。除非在file1中显式地放置正则表达式,否则-F很可能是您想要的。

票数 1
EN

Stack Overflow用户

发布于 2016-03-17 21:34:29

我想出了这个awk来确认grep

代码语言:javascript
复制
awk '
FILENAME == ARGV[1] {to_remove[$1]=1; next}
! ($5 in to_remove) {print}' file1 file2

再次感谢:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36069212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档