天天看點

linux-shell常見問題。。待續。。

字元串處理總結

截取

#* 和 ##*

#删除從左到右,第一個比對字元串為止。相當于left

##删除從左到右,最後一個比對字元串為止

%*和%%*

%删除從右到左,第一個比對字元串為止。相當于right

%%删除從右到左,最後一個比對字元串為止。

${:}或者${::}

${str:start}

${str:start:len} 正數從左開始,負數從右開始

${str//,/ }   意思是講,替換成空格缺點是如果分隔的字元串含有空格,這個分割就會錯誤。

下面的方法,可解決上面的問題。

cut -c或者cut -d        ---從1開始而不是從0開始

`echo ${val} |cut -c 2-9`        意思是第2字元開始到第9個字元

`echo ${val} |cut -d "x" -f3`   意思是按照X符号分割,取第3項   

還有一種方法,更改IFS的預設值。預設情況下,bash shell會将下面的字元當做字段分隔符:空格、制表符、換行符。

OLD_IFS=”$IFS”

IFS=”,”

arr=($a)

IFS=”$OLD_IFS”

求長度

方法1: 使用wc -L指令

echo "abc" |wc -L

方法2: expr length string

使用expr length可以擷取string的長度

方法3: 通過awk+length的方式擷取字元串長度

echo “abc”|awk '{print length($0)}'

方法4: 通過echo ${#str}的方式(注意:str是變量名)

各種括号的作用(),(()),[],[[]],{}

https://www.cnblogs.com/qlqwjy/p/8684630.html

字元串操作詳解 (長度,讀取,替換,截取,連接配接,對比,删除,位置 )

https://www.cnblogs.com/gaochsh/p/6901809.html

while IFS=: read name passwd uid gid fullname ignore

do

echo "$name ($fullname)"

done < /etc/passwd

通常見到的while語句都是while read line.這個例子裡在while後面加了IFS=:這樣的設定。這樣就把IFS的變動放到了循環裡,而不用改變原始的$IFS

繼續閱讀