我有一個 CSV 檔案,我想在其中修改以下字串:
${GDATEF(-4D,ddMMyyyy)}
為此,我使用以下腳本:
#!/usr/bin/env bash
echo "replacing >>D,ddMMyyyy)<<"
sed -i "s/D,ddMMyyyy)\}/ days\\\\\"\ \ \\\\\"%d\/%m\/%Y\\\\\"/g" $1
echo "replacing >>\${GDATEF(<< AND executing date N days"
sed -i "s/\${GDATEF(/date -d \\\\\"`date` /g" $1
echo "the final touch ;)"
sed -i "s/date -d /date -d/g" $1
這導致:
date -d\"Fri Oct 15 10:38:20 UTC 2021 -4 days\" \"%d/%m/%Y\"
現在我可以獲取該結果,洗掉一些不必要的字符并手動執行它:
sh-4.2# date -d "Fri Oct 15 09:20:53 UTC 2021 -4 days" "%d/%m/%Y"
11/10/2021
但是,我希望能夠自動執行最后一步,有什么想法嗎?
uj5u.com熱心網友回復:
取最終結果并使用sed洗掉\:
echo "date -d\"Fri Oct 15 10:38:20 UTC 2021 -4 days\" \"%d/%m/%Y\"" | sed 's \\ '
這將輸出:
date -d"Fri Oct 15 10:38:20 UTC 2021 -4 days" "%d/%m/%Y"
如果你執行它,你會得到:
11/10/2021
TL; 博士
這是多合一解決方案:
eval $(echo "date -d\"Fri Oct 15 10:38:20 UTC 2021 -4 days\" \"%d/%m/%Y\"" | sed 's \\ ')
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/324294.html
