我正在尝试使用这样的字符串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不匹配呢?
答案 0 :(得分:2)
echo ' asdfdf "\t",7 asdfadsf' | grep '"\\t",7'
答案 1 :(得分:1)
卫生部!
'\'是正则表达式中的特殊字符...
$ echo -n '"\t"' | grep "\"\\\\t\""
+ grep '"\\t"'
+ echo -n '"\t"'
"\t"
匹配