2011-10-11 60 views
1

對於知道的人來說,這可能非常容易。我幾乎要完成這個命令使用sed將變量評估爲整數

echo VERSION=1.0 | sed 's/^VERSION=\([0-9]\).\([0-9]\)/VERSION=\1.\2+1/' 

我只想寫VERSION=1.1。如何評估\2整數和總結+1 ..

+0

我想你想的perl的awk或者爲什麼 – sehe

+0

'sed':您可以使用「E」

看到基於您的sed行示例轉發匹配/替換字符串的shell命令? awk/perl/python/ruby​​/..? –

+0

我正在學習如何使用SED(看書)..,我開始明白吧:) – Rodrigo

回答

0

可以使用bc命令:

echo VERSION=`echo "1.0 + 0.1" | bc` 

結果:

VERSION=1.1 

man bc

echo "VERSION="`echo "v=1.0; v+=0.1; v" | bc` > myFile.txt 
cat myFile.txt 

VERSION=1.1 
+0

這是一個愚蠢的問題,但我用這個命令寫入一個文件,所以我怎麼能整合該行與此有關。因爲我的變量在'\ 2'中,所以我怎麼做到這一點?這不是一種正常的編程語言:) – Rodrigo

+0

您可以將版本號設置爲任何變量,然後回顯該變量+ 0.1並將其傳送到bc並將輸出重定向到文件。我更新我的答案來展示一個例子 – chown

+0

VERSION的初始值來自哪裏? – chown

0

Crpytic答案 - 如何使用整個工具包:

x='VERSION=1.0' 
echo -n $x | sed 's/\..*/./'; expr `echo $x | grep -o '\..*' | cut -c 2-` + 1 
2
淡然的sed可以做到這一點的

。那是什麼e爲。

kent$ echo VERSION=1.0 | sed 's/^VERSION=\([0-9]\).\([0-9]\)/echo "VERSION=\1.$((\2+1))"/e'            
VERSION=1.1 
+0

不錯,不知道'sed'可以做到這一點! – chown

+2

這不是一個普遍的選擇。 awk在這種情況下更好。爲了好玩,可以在sed腳本中使用/ e到另一個sed腳本,然後使用另一個sed ...我在4+嵌套後做了一次,我不知道我在哪裏...... – Kent

+0

我使用的是Mac OS X Lion terminal和sh 3.2,它不起作用,它是我的錯,還是它只能在linux下運行?,它會給出'sed:1:'s/^ VERSION = \([0-9] \)。 「:在替代命令不良標識:‘E’' – Rodrigo