获取错误sed:-e expression#1,char 5:unknown命令:`0'

时间:2015-02-25 08:13:19

标签: linux unix sed

我正在使用以下代码

      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

我从中获取数据的位置看起来像这样

      [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)

执行脚本后出现以下错误

   sed: -e expression #1, char 5: unknown command: `0'

请提出建议。

3 个答案:

答案 0 :(得分:2)

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

sed -n "\#${aa}\#,\#${bb}\#p" "$j"

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

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

awk -v s="$aa" -v e="$bb" '$0 ~ s, $0 ~ e' "$j" 

答案 1 :(得分:0)

尝试从ls -lrt |egrep "$ff|$pd"|awk -F " " '{print $9}'中取出数组然后循环遍历数组?

答案 2 :(得分:0)

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

sed -n "#${aa}#,#${bb}#p" ${j}

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