3

我有一条线:

CITY;+41119;-754831

我想将这两个数字除以 10000 得到这条线:

CITY;4.1119;-75.4831

我已经尝试了以下 sed 命令,但它什么也没做,怎么了?

sed 's/(.*;.*)([0-9]{4};.*)([0-9]{4})/\1\.\2\.\3/g'
4

2 回答 2

6

awk是更好的工具performing floating point arithmetic

x='CITY;+41119;754831'
awk -F';' -v d=10000 '{print $1,($2/d),($3/d)}' OFS=';' <<< "$x"
CITY;4.1119;75.4831
于 2013-09-27T13:27:57.430 回答
1

尝试:

 sed -r ':L;s=\b([0-9]+)([0-9]{4})\b=\1.\2=g;t L'

例子:

echo "CITY;+41119;754831" | sed -r ':L;s=\b([0-9]+)([0-9]{4})\b=\1.\2=g;t L'

输出:

CITY;+4.1119;75.4831
于 2013-09-27T13:27:50.697 回答