我正在编写一个比较两个非常相似的十进制数字的脚本,我希望脚本能够打印两个数字共享的部分。例如,假设我有数字42.86579和42.84578。由于这两个数字共有42.8部分,我希望脚本输出42.8。我该如何实施呢?
答案 0 :(得分:3)
您可以使用sed
搜索两个字符串中最长的公共前缀:
$ x=42.86579
$ y=42.84578
$ sed "s/\(.*\).* \1.*/\1/" <<< "$x $y"
42.8
或者使用GNU grep稍微简洁一点:
$ grep -Po '(.*).* \K\1' <<< "$x $y"
42.8
答案 1 :(得分:2)
a=42.86579
b=42.84578
[[ ${a%.*} != ${b%.*} ]] && exit
for ((i=0;i<${#a};i++)); do
if [[ ${a:$i:1} == ${b:$i:1} ]]; then
echo -n ${a:$i:1}
else
break
fi
done
输出:
42.8