angela 发表于 2018-8-20 11:18:15

shell字符串操作方法和实例

  1、字符串取长度:
var=123abc456  
echo ${#var}
  
9
  
expr length $var
  
9
  2、指定字符截取
echo ${var:5} #截取前五个字符  
c456
  
echo ${var:2:5} #截取第2到第5个字符
  
3abc4
  
echo ${var: -3} 截取后3个字符(左面有空格)
  
456
  3、截取指定格式的内容
  Linux 的字符串截取很有用。有八种方法。
  假设有变量 var=http://www.aaa.com/123.htm
  1. # 号截取,删除左边字符,保留右边字符。
echo ${var#*//}  其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符
  即删除 http://
  结果是 :www.aaa.com/123.htm
  2. ## 号截取,删除左边字符,保留右边字符。
echo ${var##*/}  ##*/ 表示从左边开始删除最后(最右边)一个 / 号及左边的所有字符
  即删除 http://www.aaa.com/
  结果是 123.htm
  3. %号截取,删除右边字符,保留左边字符
echo ${var%/*}  %/* 表示从右边开始,删除第一个 / 号及右边的字符
  结果是:http://www.aaa.com
  4. %% 号截取,删除右边字符,保留左边字符
echo ${var%%/*}  %%/* 表示从右边开始,删除最后(最左边)一个 / 号及右边的字符
  结果是:http:
  5. 从左边第几个字符开始,及字符的个数
echo ${var:0:5}  其中的 0 表示左边第一个字符开始,5 表示字符的总个数。
  结果是:http:
  6. 从左边第几个字符开始,一直到结束。
echo ${var:7}  其中的 7 表示左边第8个字符开始,一直到结束。
  结果是 :www.aaa.com/123.htm
  7. 从右边第几个字符开始,及字符的个数
echo ${var:0-7:3}  其中的 0-7 表示右边算起第七个字符开始,3 表示字符的个数。
  结果是:123
  8. 从右边第几个字符开始,一直到结束。
echo ${var:0-7}  表示从右边第七个字符开始,一直到结束。
  结果是:123.htm
  注:(左边的第一个字符是用 0 表示,右边的第一个字符用 0-1 表示)
$ echo ${var:5}  
//
  

  
$ echo ${var:2-5}
  
htm
  

  
$ echo $var
  
http://www.aaa.com/123.htm
  #和## 表示从左边开始删除。一个 # 表示从左边删除到第一个指定的字符;两个 # 表示从左边删除到最后一个指定的字符。
  %和%% 表示从右边开始删除。一个 % 表示从右边删除到第一个指定的字符;两个 % 表示从左边删除到最后一个指定的字符。
  删除包括了指定的字符本身。
  计算字符长度也可是使用 length:
  string="hello,everyone my name is xiaoming"
  expr length "$string"
  输出:34
  注意:string字符串里边有空格,所以需要添加双引号
  使用 expr 命令时,表达式中的运算符左右必须包含空格,如果不包含空格,将会输出表达式本身:
  expr 5+6    // 直接输出 5+6
  expr 5 + 6       // 输出 11
  对于某些运算符,还需要我们使用符号"\"进行转义,否则就会提示语法错误。
  expr 5 * 6       // 输出错误
  expr 5 \* 6      // 输出30
  利用shell是字符串反写的方法有
  1、通过rev命令
huxianyong@IOT2~$>echo 12345|rev  
54321
  2、通过awk
echo ABCD|awk '{for(i=1;i
页: [1]
查看完整版本: shell字符串操作方法和实例