부분적으로 서식이 지정된 텍스트를 추출하는 이식 가능한 방법이 있습니까?

부분적으로 서식이 지정된 텍스트를 추출하는 이식 가능한 방법이 있습니까?

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)만 사용하므로 이식성을 최대한 높입니다.

관련 정보