簡體   English   中英

如何用Shell腳本替換單位值

[英]How to replace the unit values with shell scripting

我有格式的輸出

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", " " | tr "p", " "等,但是問題在於它會刪除輸出中每次出現的字母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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM