如何grep非键盘字符?

时间:2013-09-25 03:46:42

标签: linux grep

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

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

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

2 个答案:

答案 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来解决此问题。