Pages - Menu

2023年5月19日 星期五

[ShellScript]shell script字串處理

睡睡念

shell script的字串處理,原本以為只能用grep 跟 awk 走pipeline來用,
原來還能直接透過${} 來處理,shell script的水好深阿…


正文

來個例子,
有個tag 叫 dev_1.1.23 ,我只要後面的版號就好,該怎麼做。

本來做法

#!/bin/bash
set -x
abc="dev_1.1.23"
echo $abc|grep -o '\d.\d.\d.'

利用 grep 取值,並只顯示符合正則的字串, 所以要用 -o

1.1.23

如果改用${}的文字非貪婪左刪除

#!/bin/bash
set -x
abc="dev_1.1.23"
echo ${abc#*_}

1.1.23


除了左刪除,也能做到右刪除

# 小比對左
## 大比對左
% 小比對右
%% 大比對右
* 用來比對然後刪除

ps.
set -x 是屬於xtrace的應用,用來除錯的。
也可以在執行的時候,加上 bash -x curl.sh
這樣使用
詳細參考Shell script前言

ref. Linux Shell 指令碼中 ${} 用法

沒有留言:

張貼留言