首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取错误sed:-e表达式#1,字符5:未知命令:‘0’

获取错误sed:-e表达式#1,字符5:未知命令:‘0’
EN

Stack Overflow用户
提问于 2015-02-25 16:13:19
回答 3查看 4.3K关注 0票数 0

我正在使用下面的代码

代码语言:javascript
复制
      ff=`date +%h" "%Oe`
      pd=`date -d'yesterday' +%h" "%Oe`
      aa=`date -d'yesterday' +%d\/%m\/%Y`
      bb=`date +%d\/%m\/%Y`
      for j in `ls -lrt |egrep "$ff|$pd"|awk -F " " '{print $9}'`
      do
      sed -n "/${aa}/,/${bb}/p" ${j} 
      done

我从中获取数据的日志如下所示

代码语言:javascript
复制
      [2015-01-07 18:39:18,212] host123 WARN com.host123 .elf.UserQuest -  
      Quest/option {o.q.more.paper.osc#0} references unknown dependent   
      {t.what.form.file.more.action} in application {src-code}. Please            
      revise.

      [2015-01-07 18:39:18,212] host123 WARN com.host123 .elf.UserQuest -   
      Quest/option {o.q.more.paper.osc#1} references unknown dependent 
      {t.what.form.file.more.action} in application {src-code}. Please  
      revise.

      [2015-01-07 18:40:34,281] cessor32 ERROR com.host123 
      .email.DirectMailer -  Unable to connect to server {1.1.1.1}:
      javax.mail.MessagingException: Could not connect to SMTP host:  
      1.1.1.1, port: 25, response: 451
      at              
      com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:996)
      at  
  com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:197)
   at javax.mail.Service.connect(Service.java:233)
   at javax.mail.Service.connect(Service.java:134)
   at               
   com.host123.email.DirectMailer.deliverMessage(DirectMailer.java:191)

在执行脚本后,我得到以下错误

代码语言:javascript
复制
   sed: -e expression #1, char 5: unknown command: `0'

请一定要提点建议。

EN

回答 3

Stack Overflow用户

发布于 2015-02-25 16:17:47

这里的问题是,您在sed命令中使用/分隔符,同时使用包含相同字符的模式。尝试将sed命令更改为:

代码语言:javascript
复制
sed -n "\#${aa}\#,\#${bb}\#p" "$j"

正如NeronLeVelu在评论中提到的(谢谢),有必要用反斜杠对字符进行转义。

或者,您可以使用awk打印您的行范围:

代码语言:javascript
复制
awk -v s="$aa" -v e="$bb" '$0 ~ s, $0 ~ e' "$j" 
票数 2
EN

Stack Overflow用户

发布于 2015-02-25 16:16:55

尝试从ls -lrt |egrep "$ff|$pd"|awk -F " " '{print $9}'中创建数组,然后循环通过数组?

票数 0
EN

Stack Overflow用户

发布于 2015-02-25 16:19:13

问题是bb的值包含/s (您的sed命令也使用/作为分隔符)。尝试将行更改为:

代码语言:javascript
复制
sed -n "#${aa}#,#${bb}#p" ${j}

另一个建议是使用较新的ff=$(date +%h" "%Oe)格式

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28714142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档