python带通配符的字符串匹配_Bash技巧:实例介绍数个参数扩展表达式以处理字符串变量...
生活随笔
收集整理的這篇文章主要介紹了
python带通配符的字符串匹配_Bash技巧:实例介绍数个参数扩展表达式以处理字符串变量...
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Linux 的 bash shell 提供了多種形式的參數擴展表達式,可以獲取變量自身的值,或者對變量值進行特定處理得到一個新的值,等等。
本篇文章對字符串變量值相關的參數擴展表達式進行匯總說明。
假設在 bash 中定義了 filepath=example/subdir/testfile.txt 這樣一個變量,可以使用下面的參數擴展來獲取一些值:
- ${filepath}
獲取 filepath 變量的值。
例如,echo ${filepath} 命令打印的結果是 example/subdir/testfile.txt。 - ${#filepath}
獲取到 filepath 變量值的字符個數,也就是字符串長度。
例如,echo ${#filepath} 命令打印的結果是 27。 - ${filepath:4:3}
從 filepath 變量值開頭的第 4 個字符開始,往后獲取三個字符,得到一個子字符串。
例如,echo ${filepath:4:3} 命令打印的結果是 ple。
注意是從開頭的第 0 個字符開始數起。
這個表達式的格式是 ${parameter:offset:length},offset 指定從哪個位置開始獲取字符,length 指定獲取多少個字符。 - ${filepath: -3:3}
從 filepath 變量值倒數的第 3 個字符開始,往后獲取三個字符,得到一個子字符串。
例如,echo ${filepath: -3:3} 命令打印的結果是 txt。
負數的 offset 表示倒數的偏移值。冒號和負號之間要加空格。
注意是從末尾的第 1 個字符開始往前數。 - ${filepath#*/}
在 filepath 變量值中,從頭開始匹配所給的 */ 這個模式,刪除第一個匹配的模式,返回后面剩余的內容。
這里用 * 通配符來匹配開頭的任意字符串。
例如,echo ${filepath#*/} 打印的結果是 subdir/testfile.txt。
這個表達式的格式是 ${parameter#word},從 parameter 變量值中刪除最短匹配 word 的前綴部分。 - ${filepath##*/}
在 filepath 變量值中,從頭開始匹配所給的 */ 這個模式,一直刪除到最后一個匹配的模式,返回后面剩余的內容。
這里用 * 通配符來匹配開頭的任意字符串。
例如,echo ${filepath##*/} 打印的結果是 testfile.txt。
這個表達式的格式是 ${parameter##word},從 parameter 變量值中刪除最長匹配 word 的前綴部分。 - ${filepath%/*}
在 filepath 變量值中,從末尾往前匹配所給的 /* 這個模式,刪除第一個匹配的模式,返回前面剩余的內容。
這里用 * 通配符來匹配末尾的任意字符串。
例如,echo ${filepath%/*} 打印的結果是 example/subdir。
這個表達式的格式是 ${parameter%word},從 parameter 變量值中刪除最短匹配 word 的后綴部分。 - ${filepath%%/*}
在 filepath 變量值中,從末尾往前匹配所給的 /* 這個模式,一直刪除到最后一個匹配的模式,返回前面剩余的內容。
這里用 * 通配符來匹配末尾的任意字符串。
例如,echo ${filepath%%/*} 打印的結果是 example。
這個表達式的格式是 ${parameter%%word},從 parameter 變量值中刪除最長匹配 word 的后綴部分。 - ${filepath/[et]/M}
在 filepath 變量值中,把第一個匹配的小寫字母 e、或者小寫字母 t,替換成大寫字母 M。
這里用 [et] 路徑名擴展來匹配小寫字母 e、或者小寫字母 t。
這個表達式的格式是 ${parameter/pattern/string},把匹配 pattern 的字符串替換成 string 字符串。
只替換第一個匹配的模式字符串。這個模式字符串可以位于變量值的開頭、中間、以及末尾部分。
例如,echo ${filepath/[et]/M} 打印的結果是 Mxample/subdir/testfile.txt。 - ${filepath//[et]/M}
在 filepath 變量值中,把所有匹配的小寫字母 e、或者小寫字母 t,替換成大寫字母 M。
這里用 [et] 擴展來匹配小寫字母 e、或者小寫字母 t。
讓 pattern 模式字符串以字符 ‘/’ 開頭,表示替換所有匹配的字符串。
例如,echo ${filepath//[et]/M} 打印的結果是 MxamplM/subdir/MMsMfilM.MxM。 - ${filepath/subdir}
在 filepath 變量值中,刪除匹配的 subdir 字符串。
例如,echo ${filepath/subdir} 打印的結果是 example//testfile.txt。
這個表達式沒有提供替換之后的字符串,表示刪除所匹配的字符串。${parameter#word} 只能刪除匹配的前綴。${parameter%word} 只能刪除匹配的后綴。
而 ${parameter/pattern} 可以刪除任意位置的匹配字符串,包括中間位置。 - ${filepath^^}
把 filepath 變量值的所有字符都轉換為大寫。
例如,echo ${filepath^^} 打印的結果是 EXAMPLE/SUBDIR/TESTFILE.TXT。
這個表達式的格式是 ${parameter^^pattern},把 parameter 變量值中匹配 pattern 模式的每一個小寫字母都轉成大寫。
如果沒有提供 pattern 模式,表示匹配任意一個字符。 - ${filepath,,}
把 filepath 變量值的所有字符都轉換為小寫。
例如,echo ${filepath,,} 打印的結果是 example/subdir/testfile.txt。
這個表達式的格式是 ${parameter,,pattern},把 parameter 變量值中匹配 pattern 模式的每一個大寫字母都轉成小寫。
如果沒有提供 pattern 模式,表示匹配任意一個字符。 - ${filepath^}
把 filepath 變量值的首字符轉成大寫。
例如,echo ${filepath^} 打印的結果是 Example/subdir/testfile.txt。
這個表達式的格式是 ${parameter^pattern},把匹配 pattern 模式的 parameter 變量值首字符轉成大寫。
如果沒有提供 pattern 模式,表示匹配任意單個字符。 - ${filepath,}
把 filepath 變量值的首字符轉成小寫。
例如,echo ${filepath,} 打印的結果是 example/subdir/testfile.txt。
這個表達式的格式是 ${parameter,pattern},把匹配 pattern 模式的 parameter 變量值首字符轉成小寫。
如果沒有提供 pattern 模式,表示匹配任意單個字符。
上面內容匯總說明了多個字符串變量值相關的擴展表達式,方便統一收藏查閱。
關于這些擴展表達式的詳細說明、以及更多的測試例子,可以查看我前面三篇以 “Bash技巧:使用參數擴展” 開頭的文章。
總結
以上是生活随笔為你收集整理的python带通配符的字符串匹配_Bash技巧:实例介绍数个参数扩展表达式以处理字符串变量...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: springboot springclo
- 下一篇: arraylist从大到小排序_经典排序