我有一个格式为的输出
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 。
我只想删除冒号后的单位。解决此问题的最佳方法是什么?
我有一个格式为的输出
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 。
我只想删除冒号后的单位。解决此问题的最佳方法是什么?
sed 's/\(:[0-9][0-9]*\)[a-z]/\1/g'
或者如果单位可能超过一个字母
sed 's/\(:[0-9][0-9]*\)[a-z][a-z]*/\1/g'
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
如果你更喜欢 perl:
echo "weight:121p height:6f money:5 update:8 read:62b query:132" \
| perl -pe 's/(\w+:\d+)\w* /$1 /g'
这会将带有尾随非数字/非点的数字强制转换为数字。
awk '{for (i = 1; i <= NF; i++) {split($i, a, /:/); if (a[2] ~ /^[[:digit:]]/) {$i = a[1] ":" a[2] + 0}}; print}' inputfile