Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.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
Regex 如何grep for";字符串\t字符串";?_Regex_Bash_Grep - Fatal编程技术网

Regex 如何grep for";字符串\t字符串";?

Regex 如何grep for";字符串\t字符串";?,regex,bash,grep,Regex,Bash,Grep,我需要搜索一大组数据文件。我想查找包含字符串“foo\tbar\tboo”的文件。我试过这个 $ find . -name "foo*dat" -exec grep foo {} \; | less "miscinfo_foo" => [ "foo\tbar\tnot_foo" "miscinfo_foo", "m

我需要搜索一大组数据文件。我想查找包含字符串“foo\tbar\tboo”的文件。我试过这个

$ find . -name "foo*dat" -exec grep foo {} \; | less
          "miscinfo_foo" => [
                               "foo\tbar\tnot_foo"
                                      "miscinfo_foo",
          "miscinfo_foo" => [
                               "foo\tbar\tyes_foo"
                                      "miscinfo_foo",
但是如果我这样做了

$ find . -name "foo*dat" -exec grep -E "foo\tbar" {} \;
。。。我没有输出。我也试过白鹭。我已尝试使用
\\t
转义
\t
,但仍然没有得到任何输出

我做错了什么

谢谢

试试看

find . -name "foo*dat" -exec grep -E 'foo\\tbar' {} \;
                                     ^   ^     ^

使用单引号而不是双引号,并带有额外的反斜杠。
'
阻止
bash
处理反斜杠,这样
grep
将实际看到
foo\\tbar
。根据您的输出,我认为您正在寻找文本反斜杠T,而不是ASCII字符9,因此将反斜杠加倍,使
grep
将其匹配为文本。

这里有两种效果:

  • grep理解
    \t
    表示制表符
  • shell将在双引号字符串中展开
    \\
    \
  • 您希望对斜杠进行转义,因此需要在单引号内将
    \\t
    传递给grep:

    grep 'foo\\tbar'
    

    尝试使用
    'foo\\tbar'
    '
    中的其他变体,而不是
    '
    。我认为您要查找的
    \t
    是文本,而不是转义序列,因此您需要保护文本反斜杠不受bash处理的影响。谢谢cxw。真管用!
    -E
    没有做任何有用的事情。