문자열에서 버전 번호를 추출하는 방법

문자열에서 버전 번호를 추출하는 방법

저는 UNIX를 처음 사용합니다.

아래와 같이 이 문자열에서 버전 번호를 한 번에 하나씩 추출하고 싶은 경우가 있는데 어떻게 해야 합니까?

release-2.15-5 > 2.15
release-2.15 > 2.15
2.15 > 2.15
2.15-5 > 2.15

이렇게 했는데 echo release-2.15-5 | cut -f1 -d'-'결과가 올바르지 않습니다.

답변1

맥락이 그리 많지 않다는 점을 감안할 때 grep해당 정보 추출 지침을 확인하는 것이 좋습니다. 예를 들어 입력이 이 유형인 경우 grep다음과 같이 사용할 수 있습니다.

grep -Eo '[0-9]\.[0-9]+' filename 

어디:

  • -E확장 정규식을 사용할 것임을 나타내는 플래그입니다(확인여기더 많은 정보를 알고 싶다면)

  • -o발견된 경우 정확히 일치하는 항목만 반환해야 함을 지정하는 플래그입니다.

  • [0-9]\.[0-9]+숫자, 점, 그리고 하나 이상의 후행 숫자가 필요함을 의미하는 정규식입니다. 점 문자는 이스케이프되어야 합니다. 그렇지 않으면 일반 점, 즉 ."모든 문자"로 처리됩니다.

  • filenamegrep에 대한 입력입니다

귀하의 예에서는 다음을 반환합니다.

2.15
2.15
2.15
2.15

반면에 일치 항목 중 하나만 필요한 경우 head다음과 같이 grep으로 파이프할 수도 있습니다.

grep -Eo '[0-9]\.[0-9]+' filename | head -1

관련 정보