我们知道grep -v模式文件会打印不包含模式的行。
我要搜索的文件是一张表:
Sample File, Sample Name, Panel, Marker, Allele 1, Allele 2, GQ,
M090972.s-206_B01.fsa, M090972-206, Sample ID-1, SNPchr1, C, T,0.9933,
我想淘汰包含" M090972-206"以及更多这样的模式。
我的搜索模式来自文本文件目录:
$ ls 20170227_snap_genotypes_1_VCF
M070370-208_S1.genome.vcf M170276-201_S20.genome.vcf
M170308-201_S5.genome.vcf
只有这些文件名的一部分直到第一个" _"在我的表格中(或第一个"。"如果我删除" .s"在示例中)。它不是一个恒定数量的字符。我可以在第一个"之后删除字符。"但是在sed和awk文档中找不到方法。
或者我尝试使用agrep 3.441和" -f"用于从
创建的临时文件中读取模式的选项$ ls "directory" > temp.txt
$ ./agrep -v -f temp.txt $infile >> $outfile
但agrep -f
找不到任何匹配(或-v
的所有内容)。
我错过了什么?是否有更好的方法,可能是sed
或awk
?
答案 0 :(得分:0)
如果要从_
目录中存在的文件名(直到第一个20170227_snap_genotypes_1_VCF
)派生您的模式,那么您可以这样做:
# run from the parent of 20170227_snap_genotypes_1_VCF directory
grep -vf <(cd 20170227_snap_genotypes_1_VCF; ls | cut -f1 -d_) file