【问题标题】:KSH remove digits from number precisionKSH 从数字精度中删除数字
【发布时间】:2015-04-08 08:10:42
【问题描述】:

我正在尝试比较一个 ksh 脚本中的 2 个日志文件,看起来像

日志1:

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

日志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

column 3 上的Log1. 之后最多有 2 位数字(例如:3.53)

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

如何在 .对于第一个日志或删除 log2 中的数字以便能够逐行比较它们?

我的脚本是用ksh写的。

【问题讨论】:

    标签: ksh precision digits


    【解决方案1】:

    您应该使用 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
    

    上面的代码读起来很容易,但是对 cat ("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
    

    【讨论】:

    • 非常感谢您的回复!
    猜你喜欢
    • 1970-01-01
    • 2015-08-09
    • 1970-01-01
    • 1970-01-01
    • 2013-02-23
    • 2021-11-08
    • 2012-11-15
    • 1970-01-01
    相关资源
    最近更新 更多