У меня возникли проблемы с "grep" и сопоставлением символов - PullRequest
0 голосов
/ 25 ноября 2011

Вот моя проблема. Существовал файл с именем data.f, я использую символ сортировки "48", я хочу сопоставить "48" в моем файле с символами сортировки в выражениях в скобках.

grep '[[.48.]]' data.f

но есть некоторый совет об ошибке:

grep: Invalid collation character

но с классами символов в выражениях в скобках проблем нет.

grep "[[:alpha:]]" data.f

Ответы [ 3 ]

1 голос
/ 25 ноября 2011

если хочешь grep 48

grep 48 file

если хочешь grep "48"

grep '"48"' file

// чтобы избежать обсуждения в комментариях, я расширяю свой пост дополнительными примерами

если вы хотите записать вхождения "48" в одну строку, вам следует использовать регулярные выражения

cat file | grep '\(.*"48"\)\{n\}' | grep -v '\(.*"48"\)\{n+1\}'

в основном вы grep строк по крайней мере с n вхождениями, а затем с помощью invert-match вы исключаете строки с n + 1 вхождениями строки, поэтому вы получаете n вхождений

в вашем комментарии, который вы упомянули, вы хотели получить строки с 5 вхождениями "48", которые МОГУТ быть разделены другими символами (вот почему я поставил. * Перед "48") так вот образец

cat file | grep '\(.*"48"\)\{5\}' | grep -v '\(.*"48"\)\{6\}'
0 голосов
/ 25 ноября 2011

Я понятия не имею, что вы подразумеваете под «Я использую символ сортировки« 48 »» (я знаю, что такое классы сортировки, и именно это grep ожидает увидеть в ваших входных данных, но я не знаю, что будет символ сортировки быть), но из одного из ваших комментариев кажется, что вы на самом деле ищете точную строку [[.48.]] в вашем файле. Вот два способа сделать это:

grep -F '[[.48.]]' data.f

grep '\[\[.48.]]' data.f

В одном из ваших других комментариев вы спрашивали, как запросить у grep строки, по крайней мере, с пятью вхождениями «48». Это довольно четкий вопрос регулярных выражений:

grep -E '(.*48){5}' data.f
0 голосов
/ 25 ноября 2011

Не будет grep '48' data.f работать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...