如何grep for" string \ tstring"?

时间:2016-09-12 16:59:48

标签: regex bash grep

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

Time.current

但如果我这样做......

ActiveSupport::TimeWithZone

......我没有输出。我也试过egrep。我尝试使用$ 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" {} \; ,但仍然没有输出。

我做错了什么?

由于

2 个答案:

答案 0 :(得分:2)

尝试

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

用单引号而不是双引号,并带有额外的反斜杠。 ''阻止bash处理反斜杠,以便grep实际看到foo\\tbar。根据你的输出,我认为你正在寻找文本文本反斜杠 - tee,而不是ASCII字符9,所以加倍反斜杠使grep与文字文本相匹配。

答案 1 :(得分:1)

这里有两种效果:

  1. grep了解\t表示制表符。
  2. shell会在双引号字符串中将\\扩展为\
  3. 您希望转义斜杠,因此您需要在单引号内将\\t传递给grep:

    grep 'foo\\tbar'