如何执行另一个命令的输出
How to execute the output of another command
我有一个 CSV 文件,我想在其中修改以下字符串:
${GDATEF(-4D,ddMMyyyy)}
为此,我使用以下脚本:
#!/usr/bin/env bash
echo "replacing >>D,ddMMyyyy)<<"
sed -i "s/D,ddMMyyyy)\}/ days\\\"\ \+\\\"%d\/%m\/%Y\\\"/g"
echo "replacing >>${GDATEF(<< AND executing date + N days"
sed -i "s/${GDATEF(/date -d \\\"`date` + /g"
echo "the final touch ;)"
sed -i "s/date -d /date -d/g"
这导致:
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
但是,我希望能够自动执行最后一步,有什么想法吗?
取最后的结果用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;DR
这是一站式解决方案:
eval $(echo "date -d\"Fri Oct 15 10:38:20 UTC 2021 + -4 days\" +\"%d/%m/%Y\"" | sed 's+\++')
我有一个 CSV 文件,我想在其中修改以下字符串:
${GDATEF(-4D,ddMMyyyy)}
为此,我使用以下脚本:
#!/usr/bin/env bash
echo "replacing >>D,ddMMyyyy)<<"
sed -i "s/D,ddMMyyyy)\}/ days\\\"\ \+\\\"%d\/%m\/%Y\\\"/g"
echo "replacing >>${GDATEF(<< AND executing date + N days"
sed -i "s/${GDATEF(/date -d \\\"`date` + /g"
echo "the final touch ;)"
sed -i "s/date -d /date -d/g"
这导致:
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
但是,我希望能够自动执行最后一步,有什么想法吗?
取最后的结果用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;DR
这是一站式解决方案:
eval $(echo "date -d\"Fri Oct 15 10:38:20 UTC 2021 + -4 days\" +\"%d/%m/%Y\"" | sed 's+\++')