我有几个大文本文件,在文件中UNIQS.txt
我有一个grep
来自另一个文件的字符串列表。我使用的代码是
grep -f UNIQS.txt EEP_VSL.uniqs.sam > UNIQ_templates.sam
Run Code Online (Sandbox Code Playgroud)
什么都不做 - 生成的文件是空的。但是当我这样做时
grep -F -f UNIQS.txt EEP_VSL.uniqs.sam > UNIQ_templates.sam
Run Code Online (Sandbox Code Playgroud)
它工作正常。这让我感到困惑,因为我认为grep
不会将条目解释UNIQS.txt
为没有引号和斜杠等的正则表达式模式在文件中(没有)。一般来说,如果您从文件中获取模式,那么它会自动认为它们是正则表达式模式吗?
编辑:在UNIQS.txt
文件中,有表单的换行符分隔字符串
HWI-ST365:215:D0GH0ACXX:2:1101:10034:186783
Run Code Online (Sandbox Code Playgroud)
(称为模板名称)和文件EEP_VSL...
制表符分隔的列,大约有14列,第一列是模板名称,所以基本上我想提取文件中每个模板对应的行。
Gil*_*il' 87
该-f
选项指定 grep 读取模式的文件。这就像在命令行上传递模式一样(-e
如果有多个,则使用该选项),除了当您从 shell 调用时,您可能需要引用该模式以保护其中的特殊字符不被 shell 扩展。
参数-E
or-F
或-P
,如果有的话,告诉 grep 模式是用哪种语法编写的。没有参数,grep 需要基本的正则表达式;with -E
, grep 需要扩展的正则表达式;使用-P
(如果支持),grep 需要Perl 正则表达式;和-F
,grep 需要文字字符串。模式是来自命令行还是来自文件并不重要。
请注意,字符串是子字符串:如果您a+b
作为模式传递,a+b+c
则匹配包含的行。如果要搜索仅包含所提供字符串之一的行,请传递该-x
选项。
归档时间: |
|
查看次数: |
167215 次 |
最近记录: |