如果在file2中找到匹配项,我将尝试删除file1中的一行。file2中的匹配将位于-之前的特定字段$5中。下面的awk没有指定要搜索的字段,而是运行,希望是一个开始。谢谢:)。
file1
AGRN
ABL
SCN1Afile2
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)
chr1 970621 970740 chr1:970621-970740 BCR-8|gc=57.1
chr1 976035 976270 chr1:976035-976270 BCR-9|gc=74.5 awk
awk '!/file1/' file2发布于 2016-03-17 18:48:59
为此,请使用grep:
grep -vFf file1 file2-f从file1读取搜索模式,-v否定匹配,意思是如果file1中的模式之一匹配,则从file2中删除行。-F使用固定字符串进行搜索,而不是正则表达式模式。除非在file1中显式地放置正则表达式,否则-F很可能是您想要的。
发布于 2016-03-17 21:34:29
我想出了这个awk来确认grep
awk '
FILENAME == ARGV[1] {to_remove[$1]=1; next}
! ($5 in to_remove) {print}' file1 file2再次感谢:)
https://stackoverflow.com/questions/36069212
复制相似问题