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

最初の行の後にカットを止めるように指示する方法はありますか?そうでなければ、私の選択は何ですか?

答え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行からバージョン番号を抽出するために使用されます。

関連情報