다음 줄로 시작하십시오.
abcd efgh ijhk lmn opqrs 9.0.8.2c tuv wxyz
abcd efgh ijhk lmn opqrs 8.1.3.9b
추출하는 방법만
9.0.8.2c
8.1.3.9b
답변1
또한 시도
grep -oE "(\w*[.]\w*)*" file
9.0.8.2c
8.1.3.9b
답변2
이 시도,
grep -E -o '[0-9]\.[0-9]\.[0-9]\.[0-9][^[:space:]]+' file
-E
PATTERN을 확장 정규식으로 해석-o
일치하는 줄 중 일치하는 부분만 인쇄[^[:space:]]+
공백까지
답변3
통과되면단어, 공백이 아닌 문자의 시퀀스를 의미합니다.숫자0x
, 16진수(부호나 선행 없음 , 즉 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]+)+$/}'
답변4
값이 파일 내부에 있다고 가정하고 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