GREP Только цифры, а не буквенно-цифровые записи

Для отображения символов, отличных от ASCII, вам необходимо установить соответствующие пакеты шрифтов; глифы, которые не могут быть отображены, будут показаны в виде прямоугольника.

Обычно в Debian установлены следующие пакеты шрифтов, и я вижу большинство языков в их собственном шрифте:

  • fonts-dejavu-extra
  • fonts-freefont-ttf
  • fonts-liberation
  • ttf-mscorefonts -installer
  • ttf-unifont

Возможно, вам понадобится всего один или два, но, по моему опыту, они дают достаточно полный охват.

0
29.11.2018, 20:36
2 ответа

Предположим, что каждая строка содержит только одно слово без боковых пробелов:

grep -x -E '[0-9]+'

или

grep -x -E '[[:digit:]]+'

Это позволит извлечь любую строку, содержащую только цифры. Параметр -xдля grepзаставляет шаблон совпадать по всей строке. Я использую -E, чтобы расширенное регулярное выражение могло использовать +.

Шаблон [[:digit:]]+будет соответствовать хотя бы одной цифре. Тип цифры, которой он соответствует, может зависеть от вашей локали.

Чтобы разрешить пробелы до и после:

grep -x -E '[[:blank:]]*[0-9]+[[:blank:]]*'

или

grep -x -E '[[:blank:]]*[[:digit:]]+[[:blank:]]*'

Шаблон [[:blank:]]*соответствует нулю или более табуляциям или пробелам.


Ваше выражение ^\s*[0-9]соответствует строкам, которые могут начинаться с символа пробела (, предполагая, что \sсоответствует символу пробела, это действительно PCRE ), а затем содержит цифру. После цифры может стоять любой символ, как в строке 2Apricot.

Ваше выражение ^\s*[0-9][^A-Z]аналогично, но [^A-Z]заставляет сопоставляться второй не -алфавитный не -символ верхнего регистра. Это соответствует таким вещам, как 33, 1aи 5-и более длинным строкам, но не будет соответствовать односимвольной строке 3.

9
28.01.2020, 02:14

Попробуйте также

$ grep -v '[^ 0-9]' file
1
2
3
4
2
28.01.2020, 02:14

Теги

Похожие вопросы