Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何打印文件中不包含*部分*图案的所有行_Bash - Fatal编程技术网

Bash 如何打印文件中不包含*部分*图案的所有行

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

我们知道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_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,因为这来自一个文件名。