加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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的含义.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读