Bash 如何打印文件中不包含*部分*图案的所有行
我们知道grep-v模式文件打印不包含模式的行 我要搜索的文件是一个表:Bash 如何打印文件中不包含*部分*图案的所有行,bash,Bash,我们知道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, 我想删除包含“M0972-206”的行和更多类似的模式 我的搜索模式来自文本文件目录: $ ls 20170227_snap_genotypes_1
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,
我想删除包含“M0972-206”的行和更多类似的模式
我的搜索模式来自文本文件目录:
$ ls 20170227_snap_genotypes_1_VCF
M070370-208_S1.genome.vcf M170276-201_S20.genome.vcf
M170308-201_S5.genome.vcf
我的表中只有这些文件名中直到第一个“u”为止的部分(如果我删除示例中的“.s”,则为第一个“.”)。它不是一个恒定的字符数。我可以删除第一个“.”之后的字符,但在sed和awk文档中找不到方法
或者,我尝试使用带有“-f”选项的agrep 3.441从由
$ ls "directory" > temp.txt
$ ./agrep -v -f temp.txt $infile >> $outfile
但是,agrep-f
找不到任何匹配项(或带有-v
的所有内容)。
我错过了什么?有没有更好的方法,可能是使用
sed
或awk
?如果您是从20170227\u snap\u 1\u VCF
目录中存在的文件名(直到第一个\u
)导出模式,那么您可以这样做:
# run from the parent of 20170227_snap_genotypes_1_VCF directory
grep -vf <(cd 20170227_snap_genotypes_1_VCF; ls | cut -f1 -d_) file
#从20170227_snap_genetipes_1_VCF目录的父目录运行
grep-vf你的问题不清楚。temp.txt中有什么内容?要排除这些vcf文件中包含的所有模式,还是要从文件名派生模式?请通过单击编辑窗口上的{}
按钮引用您的命令部分。Tmp.txt是一个包含我的搜索模式的文件。我想排除包含其中一种搜索模式的vcf文件的所有行,并保留那些不包含其中一种搜索模式的行。Is“directory”位于ls“directory”
20170227\u snap\u genetipes\u 1\u vcf
?我用一些真实数据尝试了这一方法,效果非常好。非常感谢。因此,grep-f
接受另一个命令的输出,这里是cut
。我读到了grep
man,因为这来自一个文件名。