linux--shell--字串處理
阿新 • • 發佈:2020-09-22
1. awk
2.expr
(1)字串長度
#!/bin/bash str="123456" echo "${#str}" expr length "${str}"
(2)子串查詢
expr index ${str} ${substr}
在str上匹配子串第一次出現的位置(從1開始),找不到返回0
(3)匹配
expr match ${str} ${substr}
在str的開頭匹配子串(或正則),返回匹配到的子串長度,匹配不到返回0
(4)獲取子串
str="123456" echo "${str:1}" #23456 echo "${str:1:2}" #23 echo "${str: -2}" #56 echo "${str:(-2)}" #56 expr substr "${str}" 2 3 #234
${str:position}的字串起點從0開始
expr操作字串起點從1開始
(5)刪除子串
str="20011234 abc" echo "${str#2*1}" #1234 abc 刪除str開頭處匹配 2*1 的最短子串,非貪婪 echo "${str##2*1}" #234 abc 刪除str開頭處匹配 2*1 的最長子串,貪婪 echo "${str%1*c}" #2001 刪除str結尾處匹配 1*c 的最短子串echo "${str%%1*c}" #200 刪除str結尾處匹配 1*c 的最長子串
(6)子串替換
str="20011234 abc" echo "${str/1/T}" #200T1234 abc 替換第一個匹配的子串 echo "${str//1/T}" #200TT234 abc 替換所有匹配的子串
str="123abc123" echo "${str/#123/T}" #Tabc123 替換開頭處的子串 echo "${str/%123/T}" #123abcT 替換結尾處的子串