用sed划分一行中的数字

时间:2013-09-27 13:24:34

标签: regex sed awk

我有一句话:

CITY;+41119;-754831

我想将这两个数字除以10000得到这一行:

CITY;4.1119;-75.4831

我尝试过以下sed命令,但它没有做任何事,出了什么问题?

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

2 个答案:

答案 0 :(得分:6)

awkperforming 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

答案 1 :(得分: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