我有这个 :
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/"