SHELL脚本编程-字符串处理

                                   作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

 

 

一.字符串切片

[root@node101.yinzhengjie.org.cn ~]# echo {A..Z}
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
[root@node101.yinzhengjie.org.cn ~]# 
[root@node101.yinzhengjie.org.cn ~]# echo {A..Z}|tr -d " "
ABCDEFGHIJKLMNOPQRSTUVWXYZ
[root@node101.yinzhengjie.org.cn ~]# 
[root@node101.yinzhengjie.org.cn ~]# `echo {A..Z}|tr -d " "`
-bash: ABCDEFGHIJKLMNOPQRSTUVWXYZ: command not found
[root@node101.yinzhengjie.org.cn ~]# 
[root@node101.yinzhengjie.org.cn ~]# str=`echo {A..Z}|tr -d " "`
[root@node101.yinzhengjie.org.cn ~]# echo $str
ABCDEFGHIJKLMNOPQRSTUVWXYZ
[root@node101.yinzhengjie.org.cn ~]# echo ${#str}                   #返回字符串变量var的长度
26
[root@node101.yinzhengjie.org.cn ~]# 
[root@node101.yinzhengjie.org.cn ~]# echo ${str:10}                 #返回字符串变量var中从第offset个字符后(不包括第offset个字符)的字符开始,到最后的部分,offset的取值在0 到 ${#var}-1 之间(bash4.2后,允许为负值)
KLMNOPQRSTUVWXYZ
[root@node101.yinzhengjie.org.cn ~]# 
[root@node101.yinzhengjie.org.cn ~]# echo ${str: 10:-3}             #从最左侧跳过offset字符,一直向右取到距离最右侧lengh个字符之前的内容(注意:"10"前面是有空格的)
KLMNOPQRSTUVW
[root@node101.yinzhengjie.org.cn ~]# 
[root@node101.yinzhengjie.org.cn ~]# echo ${str:10:3}               #返回字符串变量var中从第offset个字符后(不包括第offset个字符)的字符开始,长度为number的部分
KLM
[root@node101.yinzhengjie.org.cn ~]# 
[root@node101.yinzhengjie.org.cn ~]# echo ${str: -3}                  #取字符串的最右侧几个字符(注意:冒号后必须有一空白字符)
XYZ
[root@node101.yinzhengjie.org.cn ~]# 
[root@node101.yinzhengjie.org.cn ~]# echo ${str: -5:-2}              #先从最右侧向左取到length个字符开始,再向右取到距离最右侧offset个字符之间的内容(注意:"-5"前面时有空格的)
VWX
[root@node101.yinzhengjie.org.cn ~]# 

 

二.字符串处理

1>.基于模式取子串

${var#*word}:
    其中word可以是指定的任意字符
    功能:自左而右,查找var变量所存储的字符串中,第一次出现的word, 删除字符串开头至第一次出现word字符串(含)之间的所有字符

${var##*word}:
    同上,贪婪模式,不同的是,删除的是字符串开头至最后一次由word指定的字符之间的所有内容

${var%word*}:
  其中word可以是指定的任意字符
  功能:自右而左,查找var变量所存储的字符串中,第一次出现的word, 删除字符串最后一个字符向左至第一次出现word字符串(含)之间的所有字符

${var%%word*}:
  同上,只不过删除字符串最右侧的字符向左至最后一次出现word字符之间的所有字符
[root@node101.yinzhengjie.org.cn ~]# getent passwd root
root:x:0:0:root:/root:/bin/bash
[root@node101.yinzhengjie.org.cn ~]# 
[root@node101.yinzhengjie.org.cn ~]# rootinfo=`getent passwd root`
[root@node101.yinzhengjie.org.cn ~]# 
[root@node101.yinzhengjie.org.cn ~]# echo $rootinfo 
root:x:0:0:root:/root:/bin/bash
[root@node101.yinzhengjie.org.cn ~]# 
[root@node101.yinzhengjie.org.cn ~]# echo ${rootinfo#*root} 
:x:0:0:root:/root:/bin/bash
[root@node101.yinzhengjie.org.cn ~]# 
[root@node101.yinzhengjie.org.cn ~]# echo ${rootinfo##*root} 
:/bin/bash
[root@node101.yinzhengjie.org.cn ~]# 
[root@node101.yinzhengjie.org.cn ~]# 
[root@node101.yinzhengjie.org.cn ~]# echo ${rootinfo%/*}
root:x:0:0:root:/root:/bin
[root@node101.yinzhengjie.org.cn ~]# 
[root@node101.yinzhengjie.org.cn ~]# echo ${rootinfo%%/*}
root:x:0:0:root:
[root@node101.yinzhengjie.org.cn ~]# 
参考案例1

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-07-14
  • 2022-12-23
  • 2022-12-23
  • 2021-09-29
  • 2022-12-23
  • 2021-07-03
猜你喜欢
  • 2021-09-29
  • 2022-12-23
  • 2022-12-23
  • 2021-04-09
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案