KSH从数字精度中删除数字

时间:2015-04-08 08:10:42

标签: ksh precision digits

我试图比较一个看起来像

的ksh脚本中的2个日志文件

log1:

10100 951 5 20150318 20150430 
10101 11950 0 20150323 20150630 
10102 285933 1 20150128 20150430 
10041 57007 3.53 20150128 20150430

的log 2

10100 951 5.0000 20150318 20150430
10101 11950 0.0000 20150323 20150630
10102 285933 1.0000 20150128 20150430
10041 57007 3.5300 20150128 20150430
Log1上的

column 3 . 后最多2位数(例如:3.53)

Log2上的

colum 3总是在 . 之后有4位数字(例如:0.0000或3.5300)

我怎么能在之后添加一些数字。对于第一个日志或删除log2中的数字,以便能够比较它们的行?

我的脚本是用ksh编写的。

1 个答案:

答案 0 :(得分:0)

您应该使用printf格式化值:

cat log1 | while read col1 col2 col3 col4 col5; do
   printf "%d %d %.4f %d %d\n" ${col1} ${col2} ${col3} ${col4} ${col5}
done > log1.converted

以上代码阅读起来很简单,但对猫进行了不必要的调用(" UUOC")。 写这个的更好方法是

while read col1 col2 col3 col4 col5; do
    printf "%d %d %.4f %d %d\n" ${col1} ${col2} ${col3} ${col4} ${col5}
done < log1 > log1.converted