前兩天提到說,BASH對於字串變數可以運用array的方式來取得特定位置與長度的子字串,只要你指定字串的起始位置與長度即可。其實awk命令也有類似的方法,但是它們對於起始位置的定義不一樣,使用時要特別注意才行。
前兩天提到說,BASH對於字串變數可以運用array的方式來取得特定位置與長度的子字串,只要你指定字串的起始位置與長度即可。其實awk命令也有類似的方法,但是它們對於起始位置的定義不一樣,使用時要特別注意才行。
在BASH中,定義第一個字元的位置為0;而在awk中,第一個字元的位置為1。而且要透過awk來產生sub-string時必須使用substr這個函數來達成。請看這個例子:
# 想要取得字串中的'ABCD'
String=123ABCD456
# BASH的作法:
echo ${String:3:4}
# awk的做法:
echo | awk ‘{print substr("'"${String}”’”,4,4)}’
substr函數的定義是: substr(string,position,length)
[本系列文章]
我與BASH的每一天 - [1]利用bc命令來取得數字字串中的特定欄位值
我與BASH的每一天 - [2]直取字串變數中的特定欄位值
我與BASH的每一天 - [3] 利用awk來擷取特定欄位
我與BASH的每一天 - [4] 利用awk來擷取特定欄位-2