为什么我的sed命令在使用变量时失败?

问题描述:

使用bash,我试图插入日期的变量并搜索该日期的日志文件,然后将输出发送到文件。如果我硬编码的日期这样它的工作原理:为什么我的sed命令在使用变量时失败?

sed -n '/Nov 22, 2010/,$p' $file >$log_file 

,但如果我做这样的失败:

date="Nov 22, 2010" 
sed -n '/$date/,$p' $file >$log_file 

我得到的错误是:sed: 1: "/Nov 22, 2010/,": expected context address 感谢您的帮助。

+0

http://backreference.org/2009/12/09/using-shell-variables-in-sed/ – birryree 2010-11-23 02:44:58

在shell脚本中,单引号和双引号之间存在差异。单引号内的变量扩展(不像那些在双引号),所以你需要:

date="Nov 22, 2010" 
sed -n "/$date/,\$p" $file >$log_file 

的反斜杠应该从字面上壳应采取的美元符号和具有意义的sed。

+0

是的,但是你必须在p:之前逃避那个,\ $ p – 2010-11-23 02:48:15