我正在尝试使用grep
获取所有μs
目录下的所有内容,不幸的μ
是,不是键盘字符,有什么想法吗?顺便说一句,对于普通的键盘单词,我可以使用
find / -type f -print | xargs grep -inE <search_word> 2>/dev/null
找出所有包含搜索词的纯文本文件。
在 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 的 Unicode 工具才能使其正常工作。
你介意用 sed 代替 grep 吗?
sed -n '/\xb5/p'
然而 grep 也应该工作:
grep -P '\xb5'