我試圖用grep
得到所有μs
下的一個目錄,不幸的是,μ
不是鍵盤字符,有什麼想法嗎? BTW,對於普通鍵盤的話,我可以用如何grep非鍵盤字符?
find/-type f -print | xargs grep -inE <search_word> 2>/dev/null
找出包含搜索詞的所有純文本文件。
我試圖用grep
得到所有μs
下的一個目錄,不幸的是,μ
不是鍵盤字符,有什麼想法嗎? BTW,對於普通鍵盤的話,我可以用如何grep非鍵盤字符?
find/-type f -print | xargs grep -inE <search_word> 2>/dev/null
找出包含搜索詞的所有純文本文件。
你介意用sed代替grep嗎?
sed -n '/\xb5/p'
然而grep的也應該工作:
grep -P '\xb5'
在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得到這個工作。
嗨弗拉德,感謝您的回覆。我嘗試了你的兩種方法,我得到了很多返回的結果,其中有些不是我想要的。但是,我可以使用管道grep根據返回結果來獲取我想要的結果。 – Patrick
我想我應該說:grep -P'\ xb5s'(grepμs,不只是μ);) – Vlad