前言
如下是我自己平时练习shell案例题写的脚本,且测试都是ok的,可能不是那么的精简,也希望大家能给出指点,相互学习相互进步
题目描述
有一个文件nowcoder.txt,里面的每一行都是一个数字串,编写一个shell脚本对文件中每一行的数字串进行格式化:每3个数字加入一个逗号(,)。
例如:数字串为“123456789”,那么需要格式化为123,456,789。
假设nowcoder.txt内容如下:
1
12
123
1234
123456
实现脚本
while read a; do
# 读取的字符串的长度
len=${#a}
# 计算该字符串长度是3的多少整数倍
n=$((len / 3))
# 计算字符串长度对3的余数
m=$((len % 3))
if [ $m -eq 0 ]; then
# 针对长度是3整数倍的字符串的处理
for i in $(seq 1 $n); do
start=$(((i - 1) * 3))
if [ $i -eq 1 ]; then
# echo "执行$i"
echo -n "${a:$start:3}"
else
# echo "执行2"
echo -n ","${a:$start:3}
fi
done
echo ""
else
# 针对长度不能被3整除的字符串的处理
echo -n "${a:0:$m}"
for i in $(seq 1 $n); do
start=$(((i - 1) * 3+m))
echo -n ","${a:$start:3}
done
echo ""
fi
done <nowcoder.txt
执行结果如下:
1
12
123
1,234
123,456