0

我有一个格式为的输出

weight:121p height:6f money:5 update:8 read:62b query:132 etc

我希望输出没有像这样的单位

weight:121 height:6 money:5 update:8 read:62 query:132 etc

我试过| tr "p", " "etc 但问题是它删除了输出中每次出现的字母 p 。

我只想删除冒号后的单位。解决此问题的最佳方法是什么?

4

4 回答 4

3
sed 's/\(:[0-9][0-9]*\)[a-z]/\1/g'

或者如果单位可能超过一个字母

sed 's/\(:[0-9][0-9]*\)[a-z][a-z]*/\1/g'
于 2012-05-25T04:50:10.597 回答
0
echo "weight:121p height:6f money:5 update:8 read:62b query:132 etc"|awk '{$1=substr($1,0,length($1)-1);$2=substr($2,0,length($2)-1);$5=substr($5,0,length($5)-1);print}'

        weight:121 height:6 money:5 update:8 read:62 query:132 etc
于 2012-05-25T04:54:38.220 回答
0

如果你更喜欢 perl:

echo "weight:121p height:6f money:5 update:8 read:62b query:132" \
| perl -pe 's/(\w+:\d+)\w* /$1 /g'
于 2012-05-25T04:55:25.317 回答
0

这会将带有尾随非数字/非点的数字强制转换为数字。

awk '{for (i = 1; i <= NF; i++) {split($i, a, /:/); if (a[2] ~ /^[[:digit:]]/) {$i = a[1] ":" a[2] + 0}}; print}' inputfile
于 2012-05-25T11:36:01.117 回答