如何在 ksh - unix 中将字符串转换为负十进制数

How to convert the string to negative decimal number in ksh - unix

如果在某个位置发现了一个特定的字符,我需要用一个数字替换它,并使整个字符串为负十进制数。 例如:

如果在第14位发现}需要用2替换成负十进制数:

sed -e 's/^\(.\{9\}\)}/./;s/\(.\)/-/' <<< '123 00}000150}'

输出为:

-.123 00}0001502

但是,预期输出是:

123 -00}00015.02

这会起作用:

sed -e 's/\(.* \)\(.\{8\}\)\(.*\)}/-./' <<< '123 00}000150}'

</code> 将具有值:<code>123(匹配从第一个字符到第一个 space)

</code> : <code>00}00015 (接下来的 8 个字符)

</code> : <code>0(找到下一个 } 之前的字符)