Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何grep非键盘字符?_Linux_Grep - Fatal编程技术网

Linux 如何grep非键盘字符?

Linux 如何grep非键盘字符?,linux,grep,Linux,Grep,我试图使用grep将所有μs放在一个目录下,不幸的是,μ不是键盘字符,你有什么想法吗? 顺便说一句,对于普通的键盘单词,我可以使用 find/-type f-print | xargs grep-inE 2>/dev/null 查找所有包含搜索词的纯文本文件。您介意使用sed而不是grep吗 sed -n '/\xb5/p' 但是,grep也应该起作用: grep -P '\xb5' 在Bash中,可以使用shell的引用功能传递非ASCII内容。为了正确识别搜索字符串,我们需要知道您正在进

我试图使用
grep
将所有
μs
放在一个目录下,不幸的是,
μ
不是键盘字符,你有什么想法吗? 顺便说一句,对于普通的键盘单词,我可以使用

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


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

您介意使用sed而不是grep吗

sed -n '/\xb5/p'
但是,grep也应该起作用:

grep -P '\xb5'

在Bash中,可以使用shell的引用功能传递非ASCII内容。为了正确识别搜索字符串,我们需要知道您正在进行grepping的文件的编码。如果它们在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

您可能需要玩弄一下才能让它工作。

嗨,弗拉德,谢谢您的回复。我尝试了你的两种方法,我得到了很多返回结果,其中一些是不需要的。然而,我可以根据返回结果使用管道到grep来获得我想要的结果。我想我应该说:grep-P'\xb5s'(到grepμs,而不仅仅是μ);)