Shell脚本中字符串的一些常用操作
生活随笔
收集整理的這篇文章主要介紹了
Shell脚本中字符串的一些常用操作
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Shell腳本中字符串的一些常用操作
字符串長度
${#string}可以獲得${string}的長度
例子:
string='How are you' echo ${#string} ?# 輸出結果為11
字符串取子串
${string:position:length} 在${string}中, 從位置${position}開始提取長度為${length}的子串
例子:
string='How are you' echo ${string:4:3} ?# 索引從0開始,輸出結果為:are echo ${string:4} ?# 省略長度,默認提取至最末尾,輸出結果為:are you
字符串截取(不匹配字符)
| 符號?? ?? ? | 含義解析 |
| ${string#substring} | 從變量${string}的開頭, 刪除最短匹配${substring}的子串 |
| ${string##substring}? | 從變量${string}的開頭, 刪除最長匹配${substring}的子串 |
| ${string%substring}? | ?從變量${string}的結尾, 刪除最短匹配${substring}的子串 |
| ${string%%substring}? | ? ?從變量${string}的結尾, 刪除最長匹配${substring}的子串 |
我們可以總結一下規律:
換句話來說,#總是表示左邊算起,%總是表示右邊算起;一個符號表示最短匹配,兩個符號表示最長匹配。
我們可以利用該特點做一些有意義的事情,下面舉幾個例子:
# 定義字符串 f=$(realpath 空間數據處理環境搭建.pdf) # 輸出該字符串變量的值,結果為/Users/tanzhenyu/Resources/Books/Python空間數據處理實戰/空間數據處理環境搭建.pdf echo $f # 第一件事情:提取文件名稱,輸出結果為:空間數據處理環境搭建.pdf echo ${f##*/} # 第二件事情:提取文件擴展名,輸出結果為:pdf echo ${f##*.} # 第三件事情:提取父目錄,輸出結果為:/Users/tanzhenyu/Resources/Books/Python空間數據處理實戰 echo ${f%/*}
當然,Shell編程中我們也可以使用basename和dirname兩個命令分別提取文件名和父目錄名稱:
子串替換
| 符號?? | 含義解析 |
| ${string/substring/replacement}?? | 使用${replacement}, 來代替第一個匹配的$substring |
| ${string//substring/replacement} | 使用${replacement}, 代替所有匹配的$substring |
| ${string/#substring/replacement}? | 如果${string}的前綴匹配${substring}, 那么就用${replacement}來代替匹配到的${substring} |
| ${string/%substring/replacement}? | ?如果${string}的后綴匹配${substring}, 那么就用${replacement}來代替匹配到的${substring} |
注:${substring}可以是一個正則表達式.
例子:
# 把Windows的路徑換成類UNIX的路徑 f='C:\Windows\system32\cmd.exe' echo ${$f//\///} # 輸出結果為:C:/Windows/system32/cmd.exe
---------------------?
作者:TheOneGIS?
來源:CSDN?
原文:https://blog.csdn.net/theonegis/article/details/80370876?
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
總結
以上是生活随笔為你收集整理的Shell脚本中字符串的一些常用操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 浅谈 URI 及其转义
- 下一篇: ffmpeg ffplay播放延时大问题