
我有這個 :
sed -e "/$name/s/[0-9]\:*$/$P/" -i sales_info.txt
當我使用上面的內容來更改此內容時:我的文字檔案格式名稱:編號:編號:類型:p
Tom:8:987654:commission:0
Tommy:7:12379813:hourly:0
Fan:5:2132131:salaried:0
假設 $name = Tom , $P = 55.5
我明白了:
Tom:8:987654:commission:0
Tommy:7:12379813:hourly:55.5
Fan:5:2132131:salaried:0
但是,如果我嘗試將 $P 從 55.5 更改為 41.5
它成為了
Tom:8:987654:commission:0
Tommy:7:12379813:hourly:55.41.5
Fan:5:2132131:salaried:0
我努力了 :
sed -e "/$name/s/\:[0-9]*$/\:$P/" -i sales_info.txt
它只會更改值,:0
如果值大於 0 ,則根本不會更改。假設我是否堅持使用 sed 來做到這一點。我是否把它放在:
了錯誤的位置?我試圖更改之後的最後一列值:
答案1
AFAIK:不需要在這裡轉義。然而自從.不在 [0-9] 範圍內,模式 [0-9]* 不會符合像 55.5 這樣的小數 - 你需要像 [0-9.]* 那樣的東西,即「/$name/s/: [0 -9.]*$/:$P/"