我正在使用下面的代码
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'请一定要提点建议。
发布于 2015-02-25 16:17:47
这里的问题是,您在sed命令中使用/分隔符,同时使用包含相同字符的模式。尝试将sed命令更改为:
sed -n "\#${aa}\#,\#${bb}\#p" "$j"正如NeronLeVelu在评论中提到的(谢谢),有必要用反斜杠对字符进行转义。
或者,您可以使用awk打印您的行范围:
awk -v s="$aa" -v e="$bb" '$0 ~ s, $0 ~ e' "$j" 发布于 2015-02-25 16:16:55
尝试从ls -lrt |egrep "$ff|$pd"|awk -F " " '{print $9}'中创建数组,然后循环通过数组?
发布于 2015-02-25 16:19:13
问题是bb的值包含/s (您的sed命令也使用/作为分隔符)。尝试将行更改为:
sed -n "#${aa}#,#${bb}#p" ${j}另一个建议是使用较新的ff=$(date +%h" "%Oe)格式
https://stackoverflow.com/questions/28714142
复制相似问题