регулярное выражение [[: digit:]] показывает строку с буквой между цифрами - PullRequest
1 голос
/ 08 марта 2019

У меня есть файл file.txt, похожий на этот:

abe
abbe
cde
45a678
ae
cababb
12345

И после выполнения команды egrep [[:digit:]] file.txt он показывает два результата: "45a678" и "12345".Я не понимаю, почему он показывает первый результат (я думал, что регулярное выражение будет показывать только строки с числами).

Ответы [ 3 ]

2 голосов
/ 08 марта 2019

Вы ищете любую цифру в строке. Вы должны ограничить его от начала (^) до конца ($) строки и найти хотя бы одну цифру между (+).

egrep ^[[:digit:]]+$ file.txt
1 голос
/ 08 марта 2019

в регулярном выражении [: digit:] соответствует только цифре и не проверяет всю строку.

Для разбора всей строки необходимо использовать ^ для начальной строки и $ для конечной строки.

в результате

 egrep ^\d+$ file.txt

будет соответствовать только тем строкам с номерами

0 голосов
/ 08 марта 2019

Ваше регулярное выражение [[:digit:]] ищет строки, которые имеют [[:digit:]], поэтому 45a678 совпадает, поэтому используйте ^[[:digit:]]*$ для сопоставления всех однозначных строк:

$ egrep ^[[:digit:]]*$ file1.txt
12345
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...