3

以下の内容のファイルがあります。そこからバージョン番号を出力するコマンドを取得しました。しかし、バージョンファイルの最後の部分を切り捨てる必要があります

ファイル仕様:

Version: 3.12.0.2

使用したコマンド:

VERSION=($(grep -r "Version:" /path/file.spec | awk  '{print ($2)}'))

echo $VERSION

現在の出力: 3.12.0.2

望ましい出力: 3.12.0

4

4 に答える 4

4

これを試して:

VERSION=($(grep -r "Version:" /path/file.spec| awk  '{print ($2)}' | cut -d. -f1-3))

フィールド区切り文字 (-d) で分割文字列を切り取り、-f パラメータで目的のフィールドを選択します。

于 2013-04-29T18:06:28.883 に答える
2

この単一のawkスクリプトを使用できますawk -F'[ .]' '{print $2"."$3"."$4}'

$ VERSION=$(awk -F'[ .]' '{print $2"."$3"."$4}' /path/file.spec)

$ echo $VERSION
3.12.0

それともこのシングルgrep

$ VERSION=$(grep -Po 'Version: \K\d+[.]\d+[.]\d' /path/file.spec)

$ echo $VERSION
3.12.0

しかし、あなたは一緒にいる必要はありませんgrepawk

于 2013-04-29T18:04:20.977 に答える
1

単一のファイルのみをgrepする場合、-r意味がありません。

また、コマンド ラインの出力に基づいて、この grep が機能するはずです。

grep -Po '(?<=Version: )(\d+\.){2}\d+' /path/file.spec

あなたにあげる:

3.12.0

\K素敵です。固定/非固定長の後読みで機能しました。(PCRE 7.2 以降)。それについては別の答えがあります。しかし、固定長であれば後読みの方が読みやすいと思います。

于 2013-04-29T18:59:52.827 に答える