需求分析:data含有确定字段,不确定位置,先使用单字符替换字段,然后分割,确定是否为数字
#!/bin/bash
a=ATEST
b=BTEST
c=CTEST
data="ATEST 2 | BTEST 3 | D 4 "
# 字符替换
data=$(echo $data | sed -e 's/'${a}'/F/' -e 's/'${b}'/S/' -e 's/'${c}'/Y/')
# data=${data/${delay} ${unkown}/F S}
echo $data
# 分割获取数字
aCount=$(echo $data|cut -d 'F' -f 2 | cut -d '|' -f 1) # 使用命令行赋值需要$()
bCount=$(echo $data|cut -d 'S' -f 2 | cut -d '|' -f 1)
cCount=$(echo $data|cut -d 'Y' -f 2 | cut -d '|' -f 1)
# 不含有的字段分割不对,进行判断
if [ "$aCount" -gt 0 ] 2>/dev/null ;then
echo aCount: $aCount
else
aCount=0
fi
if [ "$bCount" -gt 0 ] 2>/dev/null ;then
echo bCount: $bCount
else
bCount=0
fi
if [ "$cCount" -gt 0 ] 2>/dev/null ;then
echo cCount: $cCount
else
cCount=0
fi
echo aCount: $aCount bCount: $bCount cCount: $cCount
结果输出
F 2 | S 3 | D 4
aCount: 2
bCount: 3
aCount: 2 bCount: 3 cCount: 0