shell中的字符串操作
SHELL字符串操作
bash Shell提供了多種字符串處理的命令:
- awk命令
- expr命令
字符串長度
- ${#..}
- expr length
- awk的length(s)
實例:
string=”hello world”
${#string}
expr length “$string”
注意:雙引號是必須的。由于字符串有空格
匹配子串
格式:expr match $string $substring
作用:在string的開頭匹配substring,返回匹配到的長度,在string開頭匹配不到substring則返回0,substring能夠是正則表達式
string=”welcome to our world”
| expr match “$string” w.* | 20 |
| expr match “$string” ou.* | 0 |
公共字符的索引
格式:expr index $string $sunstring
作用:在字符串string上匹配substring中字符第一次出現的字符
string=”welcome to our world”
| expr index “$string” our | 5 |
| expr index “$string” d | 20 |
| expr index “$string” s | 0 |
執行發現。expr index的功能是尋找兩個串之間的第一個公共字符
截取子串
- 從左截取
- ${string:position}
- ${string:position:length}
- 從右截取
- ${string: -position}(冒號后面有一個空格)
- ${string:(position)}
- ${string: -position:length}
- ${string:(position):length}
expr substr
格式:expr substr $string $position $length
與${}的差別:${}的position從0開始給string標號;expr sutstr的position從1開始給string標號
string=”welcome to our world”
| echo ${string:1:8} | elcome t |
| expr substr “$string” 2 8 | elcome t |
正則表達式截取子串
使用正則表達式僅僅能抽取string開頭處或結尾處的子串。
- expr match $string ‘\($substring\)’
- expr $string : ‘\($substring\)’
| expr match “$another” “[0-9]*” | 8 |
| expr match “$another” “\([0-9]*\)” | 20091114 |
| expr “$another” : “\([0-9]*\)” | 20091114 |
注意:冒號兩側有空格
刪除子串
- ${string#substring}
刪除string開頭處與substring匹配的最短子串 - ${string##substring}
刪除string開頭處與substring匹配的最長子串 - ${string%substring}
刪除string結尾處與substring匹配的最短子串 - ${string%%substring}
- 刪除string結尾處與substring匹配的最長子串
substring并不是正則表達式
20091114 Reading Hadoop
| echo “${another#2*1}” | 114 Reading Hadoop |
| echo “${another##2*1}” | 4 Reading Hadoop |
| echo “${another%a*p}” | 20091114 Reading H |
| echo “${another%%a*p}” | 20091114 Re |
替換子串
- ${string/substring/replacement}
僅替換第一次與substring相匹配的子串 - ${string//substring/replacement}
替換全部與substring相匹配的子串 - ${string/#substring/replacement}
替換string開頭處與substring相匹配的子串 - ${string/%substring/replacement}
替換string結尾處與substring相匹配的子串
string=”20001020year20050509month”
| echo ${string/200/201} | 20101020year20050509month |
| echo ${string/200/201} | 20101020year20150509month |
| echo ${string/r*h/} | 20001020yea |
| echo ${string/#2000/2010} | 20101020year20050509month |
| echo ${string/%month/MONTH} | 20001020year20050509MONTH |
轉載于:https://www.cnblogs.com/clnchanpin/p/7306268.html
總結
以上是生活随笔為你收集整理的shell中的字符串操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 开塞露擦脸有什么效果(开塞露可以拿来护肤
- 下一篇: 1平方公里等于多少亩(土地面积如何计算亩