-2

我正在尝试使用grep获取所有μs目录下的所有内容,不幸的μ是,不是键盘字符,有什么想法吗?顺便说一句,对于普通的键盘单词,我可以使用

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

找出所有包含搜索词的纯文本文件。

4

2 回答 2

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 的 Unicode 工具才能使其正常工作。

于 2013-09-25T05:03:08.377 回答
0

你介意用 sed 代替 grep 吗?

sed -n '/\xb5/p'

然而 grep 也应该工作:

grep -P '\xb5'
于 2013-09-25T03:54:57.270 回答