Why is my sed command failing when using variables

2019-06-24 03:44发布

using bash, I'm trying to insert a variable for the date and search a log file for that date, then send the output to a file. If I hardcode the date like this it works:

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

but if I do it like this it fails:

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

The error I get is: sed: 1: "/Nov 22, 2010/,": expected context address Thanks for the help.

1条回答
爷、活的狠高调
2楼-- · 2019-06-24 04:13

In shell scripts, there is a difference between single and double quotes. Variables inside single quotes are not expanded (unlike those in double quotes), so you would need:

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

The backslash escapes the dollar sign that should be taken literally by the shell and has a meaning to sed.

查看更多
登录 后发表回答