bash:双引号的grepping失败

时间:2012-02-16 21:24:44

标签: bash grep

我正在尝试使用这样的字符串grep stdin:

"\t", 7

数字'7'是变量,所以我想做这样的事情:

mumble | grep "\"\\t\", $number"

grep没有返回任何东西。我尝试将其分解为最简单的术语:

$ echo '"\t"'
"\t"

......正如所料。

$ echo "\"\\t\""
"\t"

这会在双引号内插时呈现我想要的字符串。但...

$ echo '"\t"' | grep "\"\\t\""

不会返回任何内容。

好的,让我们打开set -x来看看bash认为发生了什么......

$ echo '"\t"' | grep "\"\\t\""
+ grep '"\t"'
+ echo '"\t"'

...所以我正在仔细研究正在被回应的内容......单引号不是基本正则表达式中的特殊字符,那么为什么grep不匹配呢?

2 个答案:

答案 0 :(得分:2)

echo ' asdfdf "\t",7 asdfadsf' | grep '"\\t",7'

答案 1 :(得分:1)

卫生部!

'\'是正则表达式中的特殊字符...

$ echo -n '"\t"' | grep "\"\\\\t\""
+ grep '"\\t"'
+ echo -n '"\t"'
"\t"

匹配