1. 程式人生 > 實用技巧 >linux--shell--字串處理

linux--shell--字串處理

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   替換結尾處的子串