Shell常用处理字符串方法(备查)

    技术2025-08-05  17

    一、构造字符串直接构造STR_ZERO=helloSTR_FIRST="i am a string"STR_SECOND='success'重复多次#repeat the first parm($1) by $2 timesstrRepeat(){local x=$2if [ "$x" == "" ]; thenx=0filocal STR_TEMP=""while [ $x -ge 1 ];doSTR_TEMP=`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可以进行更复杂的联接四、求长求字符数(char)COUNT_CHAR=`echo "$STR_FIRST" | wc -m`echo $COUNT_CHAR求字节数(byte)COUNT_BYTE=`echo "$STR_FIRST" | wc -c`echo $COUNT_BYTE求字数(word)COUNT_WORD=`echo "$STR_FIRST" | wc -w`echo $COUNT_WORD五、比较相等比较str1 = str2不等比较str1 != str2举例:if [ "$USER_NAME" = "terry" ]; thenecho "I am terry"fi小于比较#return 0 if the two string is equal, return 1 if $1 < $2, else 2strCompare() { local x=0 if [ "$1" != "$2" ]; then x=2 localTEMP=`printf "%s/n%s" "$1" "$2"` local TEMP2=`(echo "$1"; echo "$2") |sort` if [ "$TEMP" = "$TEMP2" ]; then x=1 fi fi echo $x }六、测试判空-z str判非空-n str是否为数字# return 0 if the string is num, otherwise 1strIsNum(){local RET=1if [ -n "$1" ]; thenlocal STR_TEMP=`echo "$1" | sed 's/[0-9]//g'`if [ -z "$STR_TEMP" ]; thenRET=0 fifiecho $RET}举例:if [ -n "$USER_NAME" ]; thenecho "my name is NOT empty"fiecho `strIsNum "9980"`七、分割以符号+为准,将字符分割为左右两部分使用sed举例:命令 date --rfc-3339 seconds 的输出为2007-04-14 15:09:47+08:00取其+左边的部分date --rfc-3339 seconds | sed 's/+[0-9][0-9]:[0-9][0-9]//g'输出为2007-04-14 15:09:47取+右边的部分date --rfc-3339 seconds | sed 's/.*+//g'输出为08:00以空格为分割符的字符串分割使用awk举例:STR_FRUIT="Banana 0.89 100"取第3字段echo $STR_FRUIT | awk '{ print $3; }'八、子字符串字符串1是否为字符串2的子字符串# return 0 is $1 is substring of $2, otherwise 1strIsSubstring(){local x=1case "$2" in*$1*) x=0;;esacecho $x}
    最新回复(0)