我正在尝试使用grep
来获取目录下的所有μs
,遗憾的是,μ
不是键盘字符,有什么想法吗?
顺便说一句,对于普通键盘词,我可以使用
find / -type f -print | xargs grep -inE <search_word> 2>/dev/null
找出包含搜索词的所有纯文本文件。
答案 0 :(得分:0)
你介意使用sed代替grep吗?
sed -n '/\xb5/p'
然而grep也应该有效:
grep -P '\xb5'
答案 1 :(得分: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来解决此问题。