我正在嘗試解決我的腳本中出現的一個問題,該問題不允許我在 for 回圈中匹配日期 時間 (YYYY-MM-DD HH:MM:SS)
list='"dt_txt":"2022-06-03 21:00:00"},'
regex_datehour='"dt_txt":"([0-9,-]*.[0-9,:]*)'
for i in $list; do
[[ $i =~ $regex_datehour ]] && echo "${BASH_REMATCH[1]}"
done
似乎.兩對括號之間的“”不認識空格!那是因為在串列內部,如果我用 a 替換日期和時間之間的空格_,它會按預期作業!list='"dt_txt":"2022-06-03_21:00:00"},'
所需的輸出:
2022-06-03 21:00:00
我得到了什么:
2022-06-03
uj5u.com熱心網友回復:
這里的問題是一個吸引很多人的問題,那就是空格破壞。在for回圈中,您的$list變數沒有被參考,并且它包含一個空格:
$ list='"dt_txt":"2022-06-03 21:00:00"},'
$ for i in $list ; do echo "i = $i" ; done ;
i = "dt_txt":"2022-06-03
i = 21:00:00"},
確保在所有包含除正則運算式之外的變數的字串周圍加上雙引號:
#!/usr/bin/env bash
# filename: re.sh
list='"dt_txt":"2022-06-03 21:00:00"},'
regex_datehour='"dt_txt":"([0-9,-]*.[0-9,:]*)'
for i in "$list" ; do
[[ "$i" =~ $regex_datehour ]] && echo "${BASH_REMATCH[1]}"
done
$ ./re.sh
2022-06-03 21:00:00
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/487294.html
上一篇:變形影像中的閉合線時排除空邊
下一篇:Bash腳本:根據字符過濾列
