"점"으로 구분된 숫자만 포함된 단어를 추출하는 방법

"점"으로 구분된 숫자만 포함된 단어를 추출하는 방법

다음 줄로 시작하십시오.

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
  • -EPATTERN을 확장 정규식으로 해석
  • -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

관련 정보