2013-09-25 24 views
-2

我試圖用grep得到所有μs下的一個目錄,不幸的是,μ不是鍵盤字符,有什麼想法嗎? BTW,對於普通鍵盤的話,我可以用如何grep非鍵盤字符?

find/-type f -print | xargs grep -inE <search_word> 2>/dev/null

找出包含搜索詞的所有純文本文件。

回答

0

你介意用sed代替grep嗎?

sed -n '/\xb5/p' 

然而grep的也應該工作:

grep -P '\xb5' 
+0

嗨弗拉德,感謝您的回覆。我嘗試了你的兩種方法,我得到了很多返回的結果,其中有些不是我想要的。但是,我可以使用管道grep根據返回結果來獲取我想要的結果。 – Patrick

+0

我想我應該說:grep -P'\ xb5s'(grepμs,不只是μ);) – Vlad

0

在bash中,你可以使用shell的引用設施通過非ASCII內容。爲了正確識別搜索字符串,我們需要知道您正在掃描的文件的編碼。如果它們使用UTF-8,則需要與ISO-8859-1或UTF-16中的搜索字符串不同的搜索字符串。

如果您的shell的語言環境與該文件的內容一致,這應該都是不可操作地開箱即用,但這裏有幾個解決方法。

# grep ISO-8859-1 \xB5 
grep $'\xB5' file 

# grep UTF-8 U+03BC 
grep $'\xCE\xBC' file 

# grep UTF-16be U+03BC 
grep $'\x03\xBC' file 

# grep UTF-16le U+03BC 
grep $'\xBC\x03' file 

某些舊版本的grep有一個非ASCII字符的問題;作爲一種解決方法,您也可以使用Perl。

perl -ne 'print if m/\u03BC/' file 

你可能有玩弄Perl's Unicode facilities得到這個工作。