使用 Bash 的正则表达式匹配功能,但需要使用 [[ … =~ … ]] 语法,而不是 ==。
索引从 0 开始
echo ${var:0:5} 从左边第几个字符开始,及字符的个数
0 表示左边第一个字符开始,5 表示字符的总个数
var=http://www.123.com/567.html
huayu@LAPTOP-MBCTH7PD MINGW64 ~ (master)
$ echo ${var:0:5}
http:
$ echo ${var:7:3}#表示从第8个字符开始,3代表字符总个数
www
${line:10:1}
if 语句试图检查变量 line 的第 11 个字符(因为索引从 0 开始,所以 10:1 表示从第 10 个位置开始取 1 个字符)是否匹配一个数字字符
检查一个字符是否是数字
#!/bin/bash
echo ''>2.txt
while read line
do
if [[ "${line:10:1}" =~ [0-9] ]]; then
echo "第11个字符是数字"
echo ${line:6:5} >>2.txt
else
echo "第11个字符不是数字"
echo ${line:6:3} >>2.txt
fi
done <1.txt
检查多个字符(而不仅仅是单个字符)是否全部是数字
while read line
do
if [[ "${line:10:n}" =~ ^[0-9]+$ ]]; then
echo "从第11个字符开始的n个字符全是数字"
else
echo "从第11个字符开始的n个字符不全是数字"
fi
done <1.txt