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 替换结尾处的子串