shell 字符串截取、判断操作

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

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值