Shell Script 截取部份字串

寫程式時經常需要截取字串中的一小部份, 很多程式語言都有類似 substr 等函式。在 Shell Script 雖然沒有 substr() 或 substring() 的函式, 但要實現也很方便, 以下會介紹兩種 Shell Script 下截取部份字串的方法。

${string:S:N} 寫法

在 Shell Script 抽取字串, 最簡單的方法是這樣:

上面 Shell Script 執行結果是
s is a testing
s is a te

上面程式碼第 4 行的 3, 代表開始頭 3 個字元不要, 一直截取到字串結尾; 而第 5 行的 3:9 代表開始頭 3 個字元不要, 抽取 9 個字元。

cut 指令

上面的方法只可以在 Shell Script 使用, 如果透過 cut 指令, 不論是指令模式或者 Shell Script 也適用, 例如:

$ echo “This is a testing” | cut -c1-11

以上指令會回傳 “This is a t”, 其中 “This is a testing” 是原來完整的字串, “c1-11” 代表截取第 1 個字元至第 11 個字元.

除了指定要截取的字串外, 也可以用 -d 及 -f 參數, 以指令字元分割原來字串, 例如我想用空格分割 “This is a testing”, 並抽取其中第 4 組字串, 可以這樣做:

$ echo “This is a testing” | cut -d” ” -f 4

這樣會回傳 “testing”, 如果想要抽取第 1 組字串, 可以改成這樣:

$ echo “This is a testing” | cut -d” ” -f 1

這樣就會回傳 “This”.

如果在 Shell Script 下, 要將 cut 指令截取的字串放到變數, 可以這樣寫:

上面 Shell Script 執行結果是 “testing”.




Leave a Reply