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

时间:2016-04-22 09:42:55

标签: unix sed ksh

如果在某个位置找到特定字符,我需要用数字替换它,并将整个字符串作为负十进制数。 例如:

如果在第14个位置找到},则需要将其替换为2并使其为负十进制数:

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

输出是:

-.123 00}0001502

但是,预期的输出是:

123 -00}00015.02

1 个答案:

答案 0 :(得分:1)

这将有效:

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

\1将有价值:123(从第一个字符到第一个字符匹配)

\200}00015(接下来的8个字符)

\30(找到下一个字符}