我有一个文件可能包含这样的行.
A B //由选项卡分隔
true如果找不到该行,我想返回终端,如果找不到false该值.
当我这样做时
grep 'A' 'file.tsv',它返回行(不是真/假)但是
grep 'A \t B' "File.tsv"
Run Code Online (Sandbox Code Playgroud)
要么
grep 'A \\t B' "File.tsv"
Run Code Online (Sandbox Code Playgroud)
要么
grep 'A\tB'
Run Code Online (Sandbox Code Playgroud)
要么
grep 'A<TAB>B' //按Tab键
没有任何回报.
如何使用grep搜索选项卡分隔值.
如何使用grep返回布尔值.
gee*_*aur 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.
yar*_*nli 16
两种方法:使用-P选项:
grep -P 'A\tB' "File.tsv"
Run Code Online (Sandbox Code Playgroud)
首先输入ctrl + v并输入tab
grep 'A B' "File.tsv"
Run Code Online (Sandbox Code Playgroud)
小智 12
这里有一个方便的方法来创建一个带有文字选项卡作为其值的变量:
TAB=`echo -e "\t"`
Run Code Online (Sandbox Code Playgroud)
然后,您可以按如下方式使用它:
grep "A${TAB}B" File.tsv
Run Code Online (Sandbox Code Playgroud)
这样,就不需要文字标签了.请注意,使用此方法,您需要在模式字符串周围使用双引号(而不是单引号),否则不会替换变量引用.