0

私は自動的にパッケージを構築しています。自動化されたスクリプトは、ビルドするパッケージのバージョンを取得する必要があります。Python スクリプト main.py の文字列を取得する必要があります。15行目に書いてある

VERSION="0.2.0.4" #DO NOT MOVE THIS LINE

0.2.0.4 が必要です。将来的には簡単に 0.10.3.15 程度になる可能性があるため、sed コマンドは固定長であってはなりません。私はstackoverflowでこれを見つけました:

sed -n '15s/.*\#\([0-9]*\)\/.*/\1/p'

「これにより、2 行目以外がすべて抑制され、# と / の間の数字がエコーされます」

これは機能しません(調整済み)。最後の「/」はどれ?出力を「バージョン」という変数に保存するにはどうすればよいですか?

version = sed -n ... 

エラーをスローします

コマンド -n が見つかりません

4

4 に答える 4

4

If you just need version number.

awk -F\" 'NR==15 {print $2}' main.py

This prints everything between " on line 15. Like 0.2.0.4

于 2013-09-24T10:28:38.870 に答える
1

試す:

sed -n '15s/[^"]*"\(.*\)".*/\1/p' inputfile

変数に割り当てるには、次のように言います。

VARIABLE=$(sed -n '15s/[^"]*"\(.*\)".*/\1/p' inputfile)

15 行目でのみ発生する依存関係を削除するには、次のようにしVERSIONます。

sed -n '/^VERSION=/ s/[^"]*"\(.*\)".*/\1/p' inputfile
于 2013-09-24T10:24:57.460 に答える
0

変数の割り当てにスペースがあってはなりません

version=$(your code)

version=$(sed -r -i '15s/.*\"\([0-9]*\)\/.*/"/p' main.py)

また

version=`sed -r -i '15s/.*\"\([0-9]*\)\/.*/"/p' main.py`
于 2013-09-24T10:14:31.680 に答える