下面是使用awk
的一種方式。運行,如:中script.awk
awk -v a=1000 -v b=100 -v c=10 -F "[<;>]" -v OFS=";" -f ./script.awk file
內容:
/^<sit>/ && /<\/sit>$/ {
$0 = "<sit>" format($3, a) OFS format($4, b) OFS format($5, c) "</sit>"
}1
function format(field, var) {
f = sub(/^-/, "", field)
return (f == 1 ? "-" : "") sprintf("%06d", int(field-var))
}
結果:
<sit>618709;144898;-090362</sit>
<vll>0;0;0</vll>
<cor>255;0;255</cor>
您還沒有關於如何輸出格式完全清楚。看起來您希望您的整數填充多達六個前導零,無論它們是正數還是負數。上面的腳本將做到這一點。如果零點實際上是一個錯字,那麼這一個班輪應該足夠了:
awk -v a=1000 -v b=100 -v c=10 -F "[<;>]" -v OFS=";" '/^<sit>/ && /<\/sit>$/ { $0 = "<sit>" sprintf("%06d",int($3-a)) OFS sprintf("%06d",int($4-b)) OFS sprintf("%06d",int($5-c)) "</sit>" }1' file
結果:
<sit>618709;144898;-90382</sit>
<vll>0;0;0</vll>
<cor>255;0;255</cor>
正是我想要的...填充。對不起,我的功夫很弱。 – 2013-02-13 16:54:34