Sed
使用 sed 命令替換字元串中前 2 次出現的“:”
我正在嘗試
YYYY:MM:DD HH:MM:SS
使用 date (bash) 命令比較格式中的 2 個日期。我的問題是 date 命令只使用日期格式(據我所知)YYYY-MM-DD HH:MM:SS
。我試圖將 sed 與正則表達式一起使用來替換前 2 次出現的:
with-
但我無法讓它工作。我才2018年。date1="2018:01:16 12:25:35" echo $date1 | sed 's/\([0-9]*\).*/\1/'
我會接受任何可能的建議,謝謝。
[按要求回答問題-儘管這可能不是解決實際日期比較問題的最佳方法]
一種方法是使用循環一次替換一個冒號,當結果包含兩個連字元時退出循環:
echo '2018:01:16 12:25:35' | sed ':a; /^[^-]*-[^-]*-/ b; s/:/-/; ta' 2018-01-16 12:25:35
或者,如果你有 GNU sed,你可以用連字元替換所有的冒號,然後從第三個連字元開始再次用冒號替換:
echo '2018:01:16 12:25:35' | sed 'y/:/-/; s/-/:/3g' 2018-01-16 12:25:35
只需做兩次簡單的替換:
sed 's/:/-/;s/:/-/'