bash 参数替换中的模式匹配

 参数替换中的模式匹配

 

 # 和## 从字符串的左边开始,并且去掉左边的字符串,

 % 和 %% 从字符串的右边开始,并且去掉右边的子串.

例如

name=hello lhhs "root"

name=${name#'"'}; name=${name%'"'}

结果为root

################################Start Script#######################################

 1 #!/bin/bash

 2 # patt-matching.sh

 3

 4 # 使用# ## % %%来进行参数替换操作的模式匹配.

 5

 6 var1=abcd12345abc6789

 7 pattern1=a*c  # * (通配符) 匹配a - c之间的任何字符.

 8

 9 echo

10 echo "var1 = $var1"           # abcd12345abc6789

11 echo "var1 = ${var1}"         # abcd12345abc6789

12                               # (alternate form)

13 echo "Number of characters in ${var1} = ${#var1}"

14 echo

15

16 echo "pattern1 = $pattern1"   # a*c  (everything between 'a' and 'c')

17 echo "--------------"

18 echo '${var1#$pattern1}  =' "${var1#$pattern1}"    #         d12345abc6789

19 # 最短的可能匹配, 去掉abcd12345abc6789的前3个字符

20 #                     |-|               ^^^

21 echo '${var1##$pattern1} =' "${var1##$pattern1}"   #                  6789     

22 # 最远的匹配,去掉abcd12345abc6789的前12个字符.

23 #                |----------|      ^^^^

24

25 echo; echo; echo

26

27 pattern2=b*9            # 'b' 到'9'之间的任何字符

28 echo "var1 = $var1"     # 还是 abcd12345abc6789

29 echo

30 echo "pattern2 = $pattern2"

31 echo "--------------"

32 echo '${var1%pattern2}  =' "${var1%$pattern2}"     #     abcd12345a

33 # 最近的匹配, 去掉abcd12345abc6789的最后6个字符

34 #                           |----|  ^^^^

35 echo '${var1%%pattern2} =' "${var1%%$pattern2}"    #     a

36 # 最远匹配, 去掉abcd12345abc6789的最后12个字符

37 #                |-------------|  ^^^^^^

38

39 # 记住, # 和## 从字符串的左边开始,并且去掉左边的字符串,

40 #           % 和 %% 从字符串的右边开始,并且去掉右边的子串.

41

42 echo

43

44 exit 0

转载于:https://www.cnblogs.com/fastwave2004/p/4149868.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值