シェルスクリプトのシェルコマンド出力の特定の部分をgrepします。
$ uname -r
>> 3.14.37-1-lts
3.14.37
が必要なところ。
また、値が「-jwl35」のシェルスクリプト変数VERSION
についても、値「jwl35」のみを取得します。
シェルスクリプトでこれに正規表現を使用するにはどうすればよいですか?
前もって感謝します!
多くの、多くの方法。ここにいくつかあります:
GNU Grep
$ echo 3.14.37-1-lts | grep -oP '^[^-]*'
3.14.37
sed
$ echo 3.14.37-1-lts | sed 's/^\([^-]*\).*/\1/'
3.14.37
Perl
$ echo 3.14.37-1-lts | Perl -lne '/^(.*?)-/ && print $1
3.14.37
または
$ echo 3.14.37-1-lts | Perl -lpe 's/^(.*?)-.*/$1/'
3.14.37
または
$ echo 3.14.37-1-lts | Perl -F- -lane 'print $F[0]'
3.14.37
awk
$ echo 3.14.37-1-lts | awk -F- '{print $1}'
3.14.37
cut
$ echo 3.14.37-1-lts | cut -d- -f1
3.14.37
シェルでも!
$ echo 3.14.37-1-lts | while IFS=- read a b; do echo "$a"; done
3.14.37