我需要搜索一大组数据文件。我想找到包含字符串" 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" {} \;
,但仍然没有输出。
我做错了什么?
由于
答案 0 :(得分:2)
尝试
find . -name "foo*dat" -exec grep -E 'foo\\tbar' {} \;
^ ^ ^
用单引号而不是双引号,并带有额外的反斜杠。 ''
阻止bash
处理反斜杠,以便grep
实际看到foo\\tbar
。根据你的输出,我认为你正在寻找文本文本反斜杠 - tee,而不是ASCII字符9,所以加倍反斜杠使grep
与文字文本相匹配。
答案 1 :(得分:1)
这里有两种效果:
\t
表示制表符。\\
扩展为\
。您希望转义斜杠,因此您需要在单引号内将\\t
传递给grep:
grep 'foo\\tbar'