Взять только строки с номерами с egrep - PullRequest
0 голосов
/ 07 мая 2018

У меня есть файл, где в строках есть цифры с символами, только символы и только цифры. Я хотел бы выбрать строки только с номерами. Я пытался egrep '[^[:alpha:]]' filename, но я также беру строки с символами. Есть идеи?

AQ
Feb 9, 1999
11:45
45

И я хочу только

45

Ответы [ 4 ]

0 голосов
/ 07 мая 2018

Чтобы сопоставить строки, содержащие только цифры, используйте либо «режим всей строки» с -x:

grep -xE '[[:digit:]]+' file

или добавьте привязки начала / конца строки к регулярному выражению:

grep -E '^[[:digit:]]+$' file

Обратите внимание, что вы можете заменить класс символов [:digit:] на диапазон 0-9, если вас интересует только сопоставление символов ASCII от 0 до 9:

grep -xE '[0-9]+' file
0 голосов
/ 07 мая 2018

Я бы исключил любую строку, содержащую любой нецифровый символ:

grep -v '[^[:digit:]]' file
# ........| negates the character class
0 голосов
/ 07 мая 2018

с awk

только строки с цифрами и больше ничего

$ awk '/^[0-9]+$/' file
45

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

$ awk '!/[^0-9]/' file
45
0 голосов
/ 07 мая 2018

Регулярное выражение должно проверять, что все в строке является числовым. Таким образом, ^ и $ вокруг выражения необходимы для соответствия от начала до конца каждой строки. Также совпадение должно быть явно для цифр, а не без альфа.

* 1005 Е.Г. *

 egrep '^[[:digit:]]+$' filename

Это хорошо сработало против примера в вопросе.

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