Cut을 사용하여(또는 Cut을 사용하지 않고) 문자열에서 특정 문자 집합을 가져오는 방법

Cut을 사용하여(또는 Cut을 사용하지 않고) 문자열에서 특정 문자 집합을 가져오는 방법

이 명령에서 PHP 버전을 추출하려고 합니다: php -v

php -v
PHP 7.3.27-9+ubuntu20.04.1+deb.sury.org+1 (cli) (built: Feb 23 2021 15:10:30) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.27, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.27-9+ubuntu20.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies

cut을 사용하면 필요한 데이터를 얻을 수 있지만, cut은 다른 3개 행도 구문 분석하므로 다음과 같이 끝납니다.

php -v | cut -c4-10

7.3.27
yright 
d Engin
with Z

첫 번째 줄 이후에 cut을 멈추도록 지시하는 방법이 있나요? 그렇지 않다면 내 선택은 무엇입니까?

답변1

php -v | head -n1 | cut -c4-10

답변2

php -v | sed -En '/^PHP/s/[^0-9]+(([0-9]+\.){2}[0-9]+)\-.+/\1/p'

sed이는 로 시작하는 줄을 선택한 PHP다음 해당 줄에서 버전 번호를 추출하는 데 사용됩니다 .

관련 정보