使用grep搜索选项卡

时间:2012-04-06 01:35:21

标签: grep

我的文件可能包含这样的行。

A B //由标签分隔

如果找到该行,我想将true返回终端,如果找不到该值,则false

当我这样做的时候 grep 'A' 'file.tsv',返回行(不是true / false) 但是

grep 'A \t B' "File.tsv"

 grep 'A \\t B' "File.tsv"

grep 'A\tB' 

grep 'A<TAB>B' //按标签按钮

不会返回任何内容。

如何使用grep。

搜索制表符分隔值

如何使用grep返回布尔值。

3 个答案:

答案 0 :(得分:28)

使用文字 Tab 字符,而不是\t转义符。 (您可能需要先按 Ctrl + V 。)此外,grep不是Perl 6(或带有/x修饰符的Perl 5) ;空格是重要的,并且将按照字面意思进行匹配,因此即使\t工作A \t B\t周围的额外空格也不会,除非空格实际存在于原始空格中。

对于返回值,请知道您从程序中获得三种不同的响应:标准输出,标准错误和退出代码。后者为0表示成功,非0表示某些错误(对于大多数匹配的程序,1表示未找到,2表示意味着某种使用错误)。在传统的Unix中,如果只需要退出代码,则可以重定向grep的输出;使用GNU grep,您可以使用-q选项,但请注意,这不是可移植的。传统和GNU grep都允许-s来抑制标准错误,但两者如何处理标准错误有所不同;最便携的是grep PATTERN FILE >/dev/null 2>&1

答案 1 :(得分:16)

两种方法: 使用-P选项:

grep -P 'A\tB' "File.tsv"

首先输入ctrl + v并输入tab

grep 'A  B' "File.tsv"

答案 2 :(得分:12)

这是一种使用文字制表符作为其值创建变量的便捷方法:

TAB=`echo -e "\t"`

然后,您可以按如下方式使用它:

grep "A${TAB}B" File.tsv

这样,就不需要文字标签了。请注意,使用此方法,您需要在模式字符串周围使用双引号(而不是单引号),否则不会替换变量引用。