node --version
(구체적으로) , 및 의 형식으로 텍스트를 출력하는 프로그램이 있는데 , 이는 모두 숫자입니다. Linux 및 OS X에서 작동하는 이식 가능한 방식으로 이 문자열에서 주요 버전을 추출하고 싶습니다. 나는 현재 사용하고 있습니다v<major>.<minor>.<patch>
<major>
<minor>
<patch>
grep -oP "(?<=v)(\d+)(?=.\d+.\d+)"
그러나 이것은 다른 플래그를 사용하기 때문에 OS X에서는 작동하지 않는 것 같습니다. 두 시스템 모두에서 이 작업을 수행할 수 있는 방법이 있습니까?
답변1
Bash에서는 다음을 사용할 수 있습니다.
IFS='v.' read -r throwaway major minor patch < <(node --version)
변수는 throwaway
초기화 전에 공백이 됩니다 v
. 테스트에 사용할 수 있는 OS X 시스템이 없지만 이는 좋은 bash 스크립트여야 합니다.
답변2
mikeserv의 의견에 영감을 받아 이제 다음 명령을 사용하여 이 작업을 수행합니다.
node --version | cut -d. -f1 | cut -c2-
구분 기호가 있는 컷을 사용하여 문자열 .
만 추출합니다 . v<major>
그런 다음 cut을 다시 사용하여 두 번째 문자부터 시작하는 모든 문자를 가져오고 v
.
이는 coreutils( 제외 node
)만 사용하므로 이식성을 최대한 높입니다.