我想检查第13列和第15列,如果两者相等则应返回“True”
输出 0.015 ABC 87 1558 1 1 4-30-16 4-30-16 917303625135 9141079167560945 1558 103.0000 1.545 1.71667 1.5450
使用的命令 awk -F“”'{if($ 6 == 1){打印$ 1,$ 2,$ 3,$ 4,$ 5,$ 6,$ 7,$ 8,$ 9,$ 10,$ 11,$ 12,$ 12 * $ 1,$ 12/60,$ 13, $ 14,$ 15,$ 16,$ 17,$ 18,$ 19,$ 20}其他{打印$ 1,$ 2,$ 3,$ 4,$ 5,$ 6,$ 7,$ 8,$ 9,$ 10,$ 11,$ 12,$ 12 * $ 1,$ 12/60,$ 13 ,$ 14,$ 15,$ 16,$ 17,$ 18,$ 19,$ 20}}'|头-1 -
我得到1.5450这就是我得到“假”的原因。
答案 0 :(得分:1)
您可以使用sed
:
for num in 1.5850 15.8900 1.585000 2.034; do
printf "Input: %10s ==> " "${num}"
sed 's/[0]*$//' <<< "${num}"
done
结果:
Input: 1.5850 ==> 1.585
Input: 15.8900 ==> 15.89
Input: 1.585000 ==> 1.585
Input: 2.034 ==> 2.034
当您在10
中保留重要的零时,问题会变得更加复杂。我扩展了测试用例和解决方案:
for num in 1.5850 15.8900 1.585000 2.034 30 12.0; do
printf "Input: %10s ==> " "${num}"
sed 's/\(\.[0-9]*[1-9]\)[0]*$/\1/; s/\.0$//' <<< "${num}"
done
给出了
Input: 1.5850 ==> 1.585
Input: 15.8900 ==> 15.89
Input: 1.585000 ==> 1.585
Input: 2.034 ==> 2.034
Input: 30 ==> 30
Input: 12.0 ==> 12