2013-09-25 3 views
-2

Я пытаюсь использовать grep, чтобы получить все μs по каталогу, к сожалению, μ не символ клавиатуры, любые идеи? Кстати, для обычных клавишных слов, я мог бы использоватьКак grep не-клавиатурные символы?

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

найти все текстовые файлы, содержащие искомое слово.

ответ

0

Не могли бы вы использовать sed вместо grep?

sed -n '/\xb5/p' 

Однако Grep также должны работать:

grep -P '\xb5' 
+0

Привет, Влад, спасибо за ваш ответ. Я попробовал оба ваших метода, я получил много возвращенных результатов, некоторые из них не нужны. Тем не менее, я мог бы использовать pipe to grep base для результатов возврата, чтобы получить те, которые я хочу. – Patrick

+0

Думаю, я должен был сказать: grep -P '\ xb5s' (to grep μs, а не только μ);) – Vlad

0

В Bash, вы можете использовать цитировании средства оболочечных передать содержимое, не ASCII. Чтобы правильно идентифицировать строку поиска, нам нужно знать кодировку файлов, которые вы используете grepping. Если они находятся в UTF-8, вам нужна другая строка поиска, чем в ISO-8859-1 или UTF-16.

Если локаль вашей оболочки согласуется с содержимым файла, все это должно работать нестандартно из коробки, но вот несколько обходных решений.

# 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, чтобы получить эту работу.

Смежные вопросы