2017年3月28日 星期二

[Linux 文章收集] Shell Script 截取部份字串

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

${string:S:N} 寫法 
在 Shell Script 抽取字串, 最簡單的方法是這樣: 
  1. #!/bin/sh  
  2. string="This is a testing"  
  3. echo "Original string: '$string'"  
  4. echo "Skip front 3 chars: '${string:3}'"  
  5. echo "Sub string 3-9: '${string:3:9}'"  
上面 Shell Script 執行結果是: 
Original string: 'This is a testing'
Skip front 3 chars: 's is a testing'
Sub string 3-9: '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 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

這樣會回傳 “testing”, 如果想要抽取第 1 組字串, 可以改成這樣: 
# echo "This is a testing" | cut -d" " -f 1
This

這樣就會回傳 “This”. 如果在 Shell Script 下, 要將 cut 指令截取的字串放到變數, 可以這樣寫: 
  1. #!/bin/sh  
  2.   
  3. string="This is a testing"  
  4. substr=$(echo $string | cut -d" " -f 4)  
  5. echo $substr  
上面 Shell Script 執行結果是 “testing”. 

Supplement 
變數內容的刪除、取代與替換 (Optional)

沒有留言:

張貼留言

[Git 常見問題] error: The following untracked working tree files would be overwritten by merge

  Source From  Here 方案1: // x -----删除忽略文件已经对 git 来说不识别的文件 // d -----删除未被添加到 git 的路径中的文件 // f -----强制运行 #   git clean -d -fx 方案2: 今天在服务器上  gi...