コマンド:これは以下のように今、私はシェルスクリプトを持っている(version.txtを)SEDやawkでの助けが必要私は内容のテキストファイル持って
#Project Name: XYZ
#Module Name: ABC
#
#
currentVersion=9.2.04
をcurrentVersion=9.2.05
スクリプト:
ls_version=`grep -i currentVersion version.txt | awk '{print $NF}'`
counter=`echo $ls_version | awk -F . '{print $NF}'`
fs_version=`echo $ls_version | awk -F"." -v OFS='.' '{$NF=""; print $0}'`
echo "counter b4 addition: $counter"
counter=`expr ${counter} + 1`
version=`echo ${fs_version}$counter`
echo "ls_version: $ls_version"
echo "fs_version: $fs_version"
echo "counter post addition: $counter"
echo "final version: $version"
sed -i -e "s/\(currentVersion=\).*/\1$version/" version.txt
ではなく、それはこのようなO/P与えます:
currentVersion=05
currentVersion=05
currentVersion=05
currentVersion=05
currentVersion=05
currentVersion=05
currentVersion=05
を
このスクリプトで何が間違っているか教えてください。
ありがとうございます。
を非常に多くの物事がうまくあります....のawkにはないパイプのgrepを行う、AWKの出力を格納し、エコーを使用していませんそれを別のawkにパイプし、exprを使わず、 'sed -i'を使わず、バッククォートの代わりに$()を使います。これは包括的なリストではありません。 –
ファイルの内容に "currentVersion = 05"に置き換えられた行があるような最終的な 'sed'ファイルは表示されません。これをデバッグするには、 'sed -i'の使用をやめ、実際の出力を表示します(たとえば、" counter b4 addition "には何が表示されているのでしょうか?)、実際の入力、実際の出力コード。 –
@William Pursell、ご返信ありがとうございます。 sed -Iを除去した後。私はversion.txtファイルに変更/更新がないのを見た。 – Celestial