2016-07-14 14 views
0

私は1つのファイル以下のように持って、ファイル名がFILE1.TXTであるとしましょう:私は1で最後の番号をインクリメントする必要がある。ここスクリプトファイル内の番号をインクリメントする

s.version  = "11.7.10" 

、それがあるべき1+ 1 = 2のような...

s.version  = "11.7.11" 

は、このためにどのような方法があります。前もって感謝します。次のように

+0

に保存されて

perl -i.orig -pe '/s.version/ && s/(\d+)(")/$1+1 . $2/e' file.txt 

してから、入力ファイルが上書きされますが、バックアップを浮動ポイント番号。 – sjsam

+0

@sjsam内容を変更しました。ありがとうございます。 –

+0

ここにリビジョンを更新しようとしていますか? – sjsam

答えて

1

私は、Perlとなるだろう:

言う
perl -pe '/s.version/ && s/(\d+)(")/$1+1 . $2/e' file.txt 

... s.versionを 『「あなたが見つけるすべての行で』二重に続いて、最後の1桁以上の数字に置き換え引用、何でそれらの数字であったプラスワンとの二重引用符」

だから、あなたのファイルが含まれている場合は、この:

fred 
s.version  = "11.7.10" 
s.version  = "11.7" 
s.version="12.99.99" 
frog 

ヨあなたはPerlインプレースファイルを編集したい場合、すなわち(

fred 
s.version  = "11.7.11" 
s.version  = "11.8" 
s.version="12.99.100" 
frog 

:uがこれを取得します)入力ファイルを上書きし、あなたは-iオプションを使用することができますバージョンは単純ではないとして、この要件があいまいであるfile.txt.orig

+2

pはnフラグを取り消します。また、 'perl -pe 's/sをもっと尊重することができます。バージョン。* \ K \ d +/$&+ 1/e'' – 123

+1

@ 123あなたの洞察をいただきありがとうございます。あなたが提案したように '-n'フラグを削除しました。 'K'構文は私の貧弱な' Perl'スキルを超えています。私はそれをうまく説明できませんので、私は自分のものとして試して*売ることを好まないでしょう!あなたが答えとして書いて欲しいと思うなら、私はあなたに投票してくれることをもっと嬉しく思っています:-) –

+0

perlから '\ K [6] \ Kのものを残して$に入れないでください& '。あなたの答えにそれを使うかどうかは自由に感じてください。私は答えを書くつもりはありません:) – 123

関連する問題