+ -
当前位置:首页 → 问答吧 → 找出文件中含有cannot字符的前一行和后3行,并删掉

找出文件中含有cannot字符的前一行和后3行,并删掉

时间:2011-03-30

来源:互联网

一个oracle alert_log文件中有如下内容:

Fri Jan 28 11:01:39 2011
Thread 1 advanced to log sequence 7233 (LGWR switch)
  Current log# 5 seq# 7233 mem# 0: /oradata/db/redo05.log
  Current log# 5 seq# 7233 mem# 1: /data/db/redo05b.log
Fri Jan 28 11:31:39 2011
Thread 1 advanced to log sequence 7234 (LGWR switch)
  Current log# 1 seq# 7234 mem# 0: /data/db/redo01b.log
  Current log# 1 seq# 7234 mem# 1: /oradata/db/redo01.log
Fri Jan 28 12:01:37 2011
Thread 1 cannot allocate new log, sequence 7235
Private strand flush not complete
  Current log# 1 seq# 7234 mem# 0: /data/db/redo01b.log
  Current log# 1 seq# 7234 mem# 1: /oradata/db/redo01.log
Fri Jan 28 12:01:40 2011
Thread 1 advanced to log sequence 7235 (LGWR switch)
  Current log# 2 seq# 7235 mem# 0: /oradata/db/redo02.log
  Current log# 2 seq# 7235 mem# 1: /data/db/redo02b.log

现在我想把带有cannot 行的找出来,并删除cannot行的前一行,以及后三行,
请问在vi下和sed里如何处理?TKS

我用grep试了下,可以找出来,但是不知道该如何删除?

[root@dbtest 111]# cat 2|grep -A3 -B1 'cannot'
Fri Jan 28 12:01:37 2011
Thread 1 cannot allocate new log, sequence 7235
Private strand flush not complete
  Current log# 1 seq# 7234 mem# 0: /data/db/redo01b.log
  Current log# 1 seq# 7234 mem# 1: /oradata/db/redo01.log

作者: Hendane   发布时间: 2011-03-30

  1. for i in `cat 2|grep -A3 -B1 'cannot' `;do
  2.       sed -i "/$i/d" 2
  3. done
复制代码

作者: BangBull   发布时间: 2011-03-30

  1. grep -vf <(cat -n t001|grep -A3 -B1 'cannot') <(cat -n t001)|sed 's/^\s\+[0-9]\+//'
  2.         Fri Jan 28 11:01:39 2011
  3.         Thread 1 advanced to log sequence 7233 (LGWR switch)
  4.           Current log# 5 seq# 7233 mem# 0: /oradata/db/redo05.log
  5.           Current log# 5 seq# 7233 mem# 1: /data/db/redo05b.log
  6.         Fri Jan 28 11:31:39 2011
  7.         Thread 1 advanced to log sequence 7234 (LGWR switch)
  8.           Current log# 1 seq# 7234 mem# 0: /data/db/redo01b.log
  9.           Current log# 1 seq# 7234 mem# 1: /oradata/db/redo01.log
  10.         Fri Jan 28 12:01:40 2011
  11.         Thread 1 advanced to log sequence 7235 (LGWR switch)
  12.           Current log# 2 seq# 7235 mem# 0: /oradata/db/redo02.log
  13.           Current log# 2 seq# 7235 mem# 1: /data/db/redo02b.log
复制代码

作者: 昭襄王   发布时间: 2011-03-30

热门下载

更多