如果在file2
中找到匹配项,我正尝试删除file1
中的一行。 file2
中的匹配位于$5
之前的特定字段-
中。下面的awk
没有指定要搜索但正在运行的字段,并且希望是一个开始。谢谢你:)。
文件1
AGRN
ABL
SCN1A
file2的
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
所需的输出(AGRN已删除,因为它位于file1
)
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
答案 0 :(得分:1)
使用grep
:
grep -vFf file1 file2
-f
从file1读取搜索模式,-v
否定匹配意味着如果file1中的某个模式匹配,则从file2中删除行。 -F
使用固定字符串进行搜索而不是正则表达式模式。除非您在file1 -F
中明确放置正则表达式,否则很可能是您想要的。
答案 1 :(得分:0)
我想出了grep
来确认awk '
FILENAME == ARGV[1] {to_remove[$1]=1; next}
! ($5 in to_remove) {print}' file1 file2
{{1}}
再次感谢:)