2012-02-16 86 views
1

我試圖到grep標準輸入一個字符串,它看起來像這樣:慶典:grepping爲雙引號失敗

"\t", 7 

數「7」是一個變量,所以我想這樣做:

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

grep沒有返回任何東西。我試圖將其分解爲最簡單的條款:

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

......如預期的那樣。

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

這使用雙引號插入時所需的字符串。但是...

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

不返回任何東西。

好吧,讓我們開啓設置-x看看是怎樣工作的bash什麼...

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

...所以我grepping爲究竟什麼東西被迴盪......和單引號AREN在基本的正則表達式中沒有特殊字符,爲什麼grep不匹配呢?

回答

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

DoH!

'\' 是在正則表達式特殊字符...

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

匹配。