저는 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]+
숫자, 점, 그리고 하나 이상의 후행 숫자가 필요함을 의미하는 정규식입니다. 점 문자는 이스케이프되어야 합니다. 그렇지 않으면 일반 점, 즉.
"모든 문자"로 처리됩니다.filename
grep에 대한 입력입니다
귀하의 예에서는 다음을 반환합니다.
2.15
2.15
2.15
2.15
반면에 일치 항목 중 하나만 필요한 경우 head
다음과 같이 grep으로 파이프할 수도 있습니다.
grep -Eo '[0-9]\.[0-9]+' filename | head -1