Как извлечь слово, которое имеет только число, разделенные «точкой»

Существуют xfsdump и xfsrestore для XFS, которая является родной файловой системой Linux уже довольно долгое время.

0
06.12.2018, 13:18
4 ответа

Попробуйте это,

 grep -E -o '[0-9]\.[0-9]\.[0-9]\.[0-9][^[:space:]]+' file
  • -EИнтерпретировать ШАБЛОН как расширенное регулярное выражение
  • -oПечатать только совпадающие части совпадающей строки
  • [^[:space:]]+до пробела
0
28.01.2020, 04:07

Если под словом вы подразумеваете последовательность не -пробельных символов, а под числом вы подразумеваете шестнадцатеричный (без знака или начала 0x, поэтому последовательность из 0123456789abcdefABCDEF символов ), и что вам нужно по крайней мере два из этих чисел в слове (, иначе abcdтакже будет соответствовать ), с GNU grepвы можете сделать:

grep -Pio '(?<!\S)[0-9a-f]+(\.[0-9a-f]+)+(?!\S)'

Или сperl:

perl -lne 'for (/\S+/g) {print if /^[\da-f]+(\.[\da-f]+)+$/}'
0
28.01.2020, 04:07

Предполагая, что значения находятся внутри файла, с pcre grep:

 $ grep -P '(([0-9a-f]+)\.)(?1)+(?2)' file
 9.0.8.2c
 8.1.3.9b

Или с перлом:

 perl -lne '/((([\da-f]+)\.)(?2)+(?3))/;print $1' file
0
28.01.2020, 04:07

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

grep -oE "(\w*[.]\w*)*" file
9.0.8.2c
8.1.3.9b
0
28.01.2020, 04:07

Теги

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