KSH 从数字精度中删除数字
KSH remove digits from number precision
我正在尝试比较 ksh 脚本中的 2 个日志文件,它们看起来像
log1:
10100 951 5 20150318 20150430
10101 11950 0 20150323 20150630
10102 285933 1 20150128 20150430
10041 57007 3.53 20150128 20150430
log2
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
on column 3
在 .
之后最多有 2 个数字(例如:3.53)
Log2
on colum 3
在 .
之后总是有 4 位数字(例如:0.0000 或 3.5300)
如何在 .对于第一个日志或删除 log2 中的数字以便能够逐行比较它们?
我的脚本是用ksh
写的。
您应该使用 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
我正在尝试比较 ksh 脚本中的 2 个日志文件,它们看起来像
log1:
10100 951 5 20150318 20150430
10101 11950 0 20150323 20150630
10102 285933 1 20150128 20150430
10041 57007 3.53 20150128 20150430
log2
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
on column 3
在 .
之后最多有 2 个数字(例如:3.53)
Log2
on colum 3
在 .
之后总是有 4 位数字(例如:0.0000 或 3.5300)
如何在 .对于第一个日志或删除 log2 中的数字以便能够逐行比较它们?
我的脚本是用ksh
写的。
您应该使用 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