linux – 为什么我的sed命令在使用变量时失败了?
发布时间:2020-12-14 00:33:32 所属栏目:Linux 来源:网络整理
导读:使用bash,我正在尝试为日期插入变量并在日志文件中搜索该日期,然后将输出发送到文件.如果我像这样对日期进行硬编码它会起作用: sed -n '/Nov 22,2010/,$p' $file $log_file 但如果我这样做就失败了: date="Nov 22,2010"sed -n '/$date/,$p' $file $log_fil
使用bash,我正在尝试为日期插入变量并在日志文件中搜索该日期,然后将输出发送到文件.如果我像这样对日期进行硬编码它会起作用:
sed -n '/Nov 22,2010/,$p' $file >$log_file 但如果我这样做就失败了: date="Nov 22,2010" sed -n '/$date/,$p' $file >$log_file 我得到的错误是:sed:1:“/ 2010年11月22日/,”:预期的上下文地址 解决方法
在shell脚本中,单引号和双引号之间存在差异.单引号内的变量不会扩展(与双引号中的变量不同),因此您需要:
date="Nov 22,2010" sed -n "/$date/,$p" $file >$log_file 反斜杠逃脱了应该由shell逐字取下的美元符号,并且具有sed的含义. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |