shell操作做常用的就是字符串的处理了
字符串的截取 有好多方法和函数,一下记录常用的几种:
- 截取前5位、8位、3位
[boss@123 ~]$ str=1234567890
[boss@123 ~]$ echo "$str" | cut -c1-5
12345
[boss@123 ~]$ echo "$str" | awk '{print substr($0,1,8)}'
12345678
[boss@123 ~]$ expr substr "$str" 1 8
12345678
[boss@123 ~]$ echo "$str" | dd bs=1 count=3 2>/dev/null
123
[boss@123 ~]$ echo ${str:0:3}
123 (str:0:3 中,0是位置,第一位,3是长度,往后数3位)
- 删除子串(从首尾 删除最小、最大匹配)
[boss@iZ2ze0ycbhz8v3ytd3c67qZ ~]$ mystr=1/2/3/4/5/6/7/8/9/0
[boss@iZ2ze0ycbhz8v3ytd3c67qZ ~]$ echo ${mystr#*/}
2/3/4/5/6/7/8/9/0
[boss@iZ2ze0ycbhz8v3ytd3c67qZ ~]$ echo ${mystr##*/}
0
[boss@iZ2ze0ycbhz8v3ytd3c67qZ ~]$ echo ${mystr%/*}
1/2/3/4/5/6/7/8/9
[boss@iZ2ze0ycbhz8v3ytd3c67qZ ~]$ echo ${mystr%%/*}
1
- 判断字符串包含 、非空
用包含符号
strA="helloworld"
strB="low"
if [[ $strA =~ $strB ]]
then
echo "包含"
else
echo "不包含"
fi
用通配符
A="helloworld"
B="low"
if [[ $A == *$B* ]]
then
echo "包含"
else
echo "不包含"
fi
- 判断是否非空 (可以这样记,z : zero空,n: not 不空)
if [ -z "$STRING" ]; then
echo "STRING is empty"
fi
if [ -n "$STRING" ]; then
echo "STRING is not empty"
fi
- 字符串统计长度
[boss@123 ~]$ echo $str | wc -L
10
[boss@123 ~]$ echo ${str} | awk '{print length($0)}'
10