Introduction
寫程式時經常需要截取字串中的一小部份, 很多程式語言都有類似 substr 等函式。在 Shell Script 雖然沒有 substr() 或 substring() 的函式, 但要實現也很方便, 以下會介紹兩種 Shell Script 下截取部份字串的方法。
${string:S:N} 寫法
在 Shell Script 抽取字串, 最簡單的方法是這樣:
- #!/bin/sh
- string="This is a testing"
- echo "Original string: '$string'"
- echo "Skip front 3 chars: '${string:3}'"
- echo "Sub string 3-9: '${string:3:9}'"
上面程式碼第 4 行的 3, 代表開始頭 3 個字元不要, 一直截取到字串結尾; 而第 5 行的 3:9 代表開始頭 3 個字元不要, 抽取 9 個字元。
cut 指令
上面的方法只可以在 Shell Script 使用, 如果透過 cut 指令, 不論是指令模式或者 Shell Script 也適用, 例如:
以上指令會回傳 “This is a t”, 其中 “This is a testing” 是原來完整的字串, “c1-11” 代表截取第 1 個字元至第 11 個字元. 除了指定要截取的字串外, 也可以用 -d 及 -f 參數, 以指令字元分割原來字串, 例如我想用空格分割 “This is a testing”, 並抽取其中第 4 組字串, 可以這樣做:
這樣會回傳 “testing”, 如果想要抽取第 1 組字串, 可以改成這樣:
這樣就會回傳 “This”. 如果在 Shell Script 下, 要將 cut 指令截取的字串放到變數, 可以這樣寫:
- #!/bin/sh
- string="This is a testing"
- substr=$(echo $string | cut -d" " -f 4)
- echo $substr
Supplement
* 變數內容的刪除、取代與替換 (Optional)
沒有留言:
張貼留言