嗨,我想在sed命令中使用日期变量。
谁能看到我要去哪里错了?
sed -i -e '1,/<pubDate>"$(LC_ALL=nn_NO.UTF-8 date -d "2 days ago" +'%a, %d %b %Y')/!d"' file
我正在尝试从rss转储中删除2天或更长时间的所有内容
谢谢, 克里斯
答案 0 :(得分:1)
命令扩展未在单引号内完成(单引号内的双引号不会对此进行更改)。您需要在整个命令中使用双引号,而不仅仅是命令扩展。
sed -i -e "1,/<pubDate>$(LC_ALL=nn_NO.UTF-8 date -d "2 days ago" +'%a, %d %b %Y')/!d" file
但是,如果您以交互方式进行此操作,则需要将!
放在单引号内以防止其进行历史扩展。
sed -i -e "1,/<pubDate>$(LC_ALL=nn_NO.UTF-8 date -d "2 days ago" +'%a, %d %b %Y')/"'!d' file
或关闭历史记录扩展:
set +H
sed -i -e "1,/<pubDate>$(LC_ALL=nn_NO.UTF-8 date -d "2 days ago" +'%a, %d %b %Y')/!d" file
set -H
如果您在脚本中执行此操作,则没有必要。