资源描述:
《shell处理字符串常用方法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Shell处理字符串常用方法Shell处理字符串常用方法上一篇/下一篇2010-08-0215:13:30/个人分类:Linux查看(107)/评论(0)/评分(0/0)Shell处理字符串方法(备查)一、构造字符串直接构造STR_ZERO=helloSTR_FIRST="iamastring"STR_SECOND='success'重复多次#repeatthefirstparm($1)by$2timesstrRepeat(){localx=$2if["$x"==""];thenx=0filocalSTR_TEMP=""while[$x-ge1];doSTR_T
2、EMP=`printf"%s%s""$STR_TEMP""$1"`x=`expr$x-1`doneecho$STR_TEMP}举例:STR_REPEAT=`strRepeat"$USER_NAME"3`echo"repeat=$STR_REPEAT"二、赋值与拷贝直接赋值与构造字符串一样USER_NAME=terry从变量赋值ALIASE_NAME=$USER_NAME三、联接直接联接两个字符串STR_TEMP=`printf"%s%s""$STR_ZERO""$USER_NAME"`使用printf可以进行更复杂的联接四、求长获取字符串变量的长度:${#str
3、ing}求字符数(char)COUNT_CHAR=`echo"$STR_FIRST"
4、wc-m`echo$COUNT_CHAR求字节数(byte)COUNT_BYTE=`echo"$STR_FIRST"
5、wc-c`echo$COUNT_BYTE求字数(word)COUNT_WORD=`echo"$STR_FIRST"
6、wc-w`echo$COUNT_WORD五、比较相等比较str1=str2不等比较str1!=str2举例:if["$USER_NAME"="terry"];thenecho"Iamterry"fi小于比较#return0ifthetwostrin
7、gisequal,return1if$1<$2,else2strCompare(){localx=0if["$1"!="$2"];thenx=2localTEMP=`printf"%s%s""$1""$2"`localTEMP2=`(echo"$1";echo"$2")
8、sort`if["$TEMP"="$TEMP2"];thenx=1fifiecho$x}六、测试判空-zstr判非空-nstr是否为数字#return0ifthestringisnum,otherwise1strIsNum(){localRET=1if[-n"$1"];thenlocalST
9、R_TEMP=`echo"$1"
10、sed's/[0-9]//g'`if[-z"$STR_TEMP"];thenRET=0fifiecho$RET}举例:if[-n"$USER_NAME"];thenecho"mynameisNOTempty"fiecho`strIsNum"9980"`七、分割以符号+为准,将字符分割为左右两部分使用sed举例:命令date--rfc-3339seconds的输出为2007-04-1415:09:47+08:00取其+左边的部分date--rfc-3339seconds
11、sed's/+[0-9][0-9]:[0-9][0-9]//
12、g'输出为2007-04-1415:09:47取+右边的部分date--rfc-3339seconds
13、sed's/.*+//g'输出为08:00以空格为分割符的字符串分割使用awk举例:STR_FRUIT="Banana0.89100"取第3字段echo$STR_FRUIT
14、awk'{print$3;}'八、子字符串字符串1是否为字符串2的子字符串#return0is$1issubstringof$2,otherwise1strIsSubstring(){localx=1case"$2"in*$1*)x=0;;esacecho$x}Shell字符串截取一、Li
15、nuxshell截取字符变量的前8位,有方法如下:1.exprsubstr“$a”182.echo$a
16、awk‘{printsubstr(,1,8)}’3.echo$a
17、cut-c1-84.echo$5.expr$a:‘(.\).*’6.echo$a
18、ddbs=1count=82>/dev/null二、按指定的字符串截取1、第一种方法:${varible##*string}从左向右截取最后一个string后的字符串${varible#*string}从左向右截取第一个string后的字符串${varible%%string*}从右向左截取最后一个string
19、后的字符串${varib