UP | HOME

Shell字符串截取、替换、删除

目录

字符串截取

  1. 从左向右截取第一个//后的字符串
    word=abcd-//master-01://httpab
    echo ${word#*//}
    # 输出:master-01://httpab
  1. 从左向右截取最后一个//后的字符串
    word=abcd-//master-01://httpab
    echo ${word##*//}
    # 输出:httpab
  1. 从右向左截取第一个//后的字符串
    word=abcd-//master-01://httpab
    echo ${word%//*}
    # 输出:abcd-//master-01:
  1. 从右向左截取最一个//后的字符串
    word=abcd-//master-01://httpab
    echo ${word%%//*}
    # 输出:abcd-
  1. 截取位置 0 后 3 个字符
    word=abcd-//master-01://httpab
    echo ${word:0:3}
    # 输出:abc
  1. 从位置 1 截取到末尾
    word=abcd-//master-01://httpab
    echo ${word:1}
    # 输出:bcd-//master-01://httpab
  1. 从位置-1 截取到末尾,就是截取最后一个
    word=abcd-//master-01://httpab
    echo ${word:(-1)}
    # 输出:b

字符串替换

  1. 从左到右,匹配第一个,替换//为 cd
    word=abcd-//master-01://httpab
    echo ${word/\/\//cd}
    # 输出:abcd-cdmaster-01://httpab
  1. 将所有匹配的//替换为 cd
    word=abcd-//master-01://httpab
    echo ${word//\/\//cd}
    # 输出:abcd-cdmaster-01:cdhttpab
  1. 前缀匹配,只匹配从位置 0 开始的字符
    word=abcd-//master-01://httpab
    echo ${word/#ab/cd}
    # 输出:cdcd-//master-01://httpab
    # -不是前缀,会匹配失败
    echo ${word/#-/cd}
    # 输出:abcd-cdmaster-01://httpab
  1. 后缀匹配,只匹配结尾字符
    word=abcd-//master-01://httpab
    echo ${word/%http*/xy}
    # 输出:abcd-//master-01://xy
    echo ${word/%ab/xy}
    # 输出:abcd-//master-01://httpxy
    echo ${word/%ab*/xy}
    # 出现*,会从起始匹配
    # 输出:xy

字符串删除

利用字符截取和替换,以及拼接可以实现删除字符的效果

  1. 删除前 3 个字符
    word=abcd-//master-01://httpab
    echo ${word#*${word:0:3}}
    # 输出:d-//master-01://httpab
  1. 删除后 3 个字符
    word=abcd-//master-01://httpab
    echo ${word%*${word:(-3)}}
    # 输出:abcd-//master-01://htt
  1. 删除第一个 ab
    word=abcd-//master-01://httpab
    echo ${word/ab/}
    # 输出:cd-//master-01://httpab
  1. 删除所有 ab
    word=abcd-//master-01://httpab
    echo ${word//ab/}
    # 输出:cd-//master-01://http
  1. 删除最后一个 ab
    word=abcd-//master-01://httpabcd
    echo ${word%ab*}${word##*ab}
    # 输出:abcd-//master-01://httpcd

字符串 trim

利用 xargs 可以实现 trim

    word="   hello  wolrd  "
    word=`echo $word | xargs`
    echo $word
    # 输出:hello  wolrd

作者: Petrus.Z

Created: 2021-09-01 Wed 00:39