Поиск слов в Linux с использованием grep - PullRequest
0 голосов
/ 11 июня 2019

Я хочу найти файл, в котором есть любые слова, которые содержат буквенно-цифровые слова (то есть слова, которые имеют комбинацию букв и цифр)

Я пытался использовать разные комбинации grep, но не смог найти точный результат, которого я хочу достичь

например, если у меня есть файл, который содержит несколько строк

asbcd acblk54 lkasdfn
098213 102938 091283 
aalk adsf adf
lkjas 0098324 0980 assdf
alkj30lkl 093adflkj 0lkdsf094 

, поскольку строки 1 и 5 содержат слова, которые являются буквенно-цифровыми, только две строки должны быть отфильтрованы. Как я могу добиться этого с помощью grep. (строка 2 содержит только цифры, строка 3 содержит только альфа, строка 4 содержит слова, которые являются либо буквой, либо цифрой, но не комбинацией обоих)

1 Ответ

0 голосов
/ 12 июня 2019

Что вас интересует, так это grep, который соответствует полному слову.Поэтому вам нужна опция -w:

-w, --word-regexp: Выберите только те строки, которые содержат совпадения, которые образуют целые слова.Тест состоит в том, что соответствующая подстрока должна быть либо в начале строки, либо предшествовать не состоящему из слова символу.Точно так же он должен быть либо в конце строки, либо следовать за символом, не входящим в состав слова.Составляющие слова символы - это буквы, цифры и подчеркивание.Этот параметр не действует, если также указано -x.

источник: man grep

Регулярное выражение, которое вы ищетедействительно использует [[:alnum:]], но вы должны убедиться, что он имеет [[:alpha:]] и [[:digit:]].Таким образом, слово, содержащее оба, должно иметь последовательность [[:alpha:]][[:digit:]] или [[:digit:]][[:alpha:]].Следующее регулярное выражение выглядит следующим образом: [[:alnum:]]*([[:alpha:]][[:digit:]]|[[:digit:]][[:alpha:]])[[:alnum:]]*

Соответствует следующий grep:

$ grep -w -E '[[:alnum:]]*([[:alpha:]][[:digit:]]|[[:digit:]][[:alpha:]])[[:alnum:]]*' file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...