使用 bash,我试图为日期插入一个变量并搜索该日期的日志文件,然后将输出发送到一个文件。如果我像这样硬编码日期,它就可以工作:
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
感谢您的帮助。
最佳答案
在shell脚本中,单引号和双引号是有区别的。单引号内的变量不展开(与双引号内的变量不同),因此您需要:
date="Nov 22, 2010"
sed -n "/$date/,\$p" $file >$log_file
反斜杠转义了应该由 shell 按字面意思获取并且对 sed 有意义的美元符号。
关于linux - 为什么我的 sed 命令在使用变量时失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4252280/