字元串處理總結
截取
#* 和 ##*
#删除從左到右,第一個比對字元串為止。相當于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