【发布时间】:2019-01-28 18:04:03
【问题描述】:
您好,我正在尝试在 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 天或更长时间的所有内容
谢谢, 克里斯
【问题讨论】:
您好,我正在尝试在 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 天或更长时间的所有内容
谢谢, 克里斯
【问题讨论】:
命令扩展不在单引号内完成(单引号内的双引号不会改变这一点)。您需要在整个命令周围使用双引号,而不仅仅是在命令扩展周围。
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
如果您在脚本中执行此操作,则无需这样做。
【讨论】:
chris@DESKTOP-3QUNCRU:~$ sed -i -e "1,/<pubDate>$(LC_ALL=nn_NO.UTF-8 date -d "2 days ago" +'%a, %d %b %Y')/\!d" test.rss sed: -e expression #1, char 30: unknown command: \'`