在SunOS 5.9中围绕线条

时间:2015-10-07 19:34:44

标签: bash grep sunos

尝试使用SunOS 5.9来搜索周围的行,通常我会使用grep和-B和-A来执行此操作:

grep -B 3 -A 2 foo README.txt

但是,在SunOS 5.9中,grep不支持此功能,并显示以下错误消息:

grep: illegal option -- A

以下是我从" man grep":http://www.freebsd.org/cgi/man.cgi?query=grep&apropos=0&sektion=0&manpath=SunOS+5.9&format=html

获得的内容

我的例子是尝试使用关键字"镜像"以及表示其子镜像状态的那些行。输入grep将是:

d6: Mirror
    Submirror 0: d61
      State: Okay
    Submirror 1: d62
      State: Okay
    Pass: 1
    Read option: ***
    Write option: ***
    Size: ***

d61: Submirror of d6
    State: Okay
    Size: ***
    Stripe 0:
    Device     Start Block  Dbase        State Reloc Hot Spare
    CCC          0     No            Okay   Yes


d62: Submirror of d6
    State: Okay
    Size: ***
    Stripe 0:
    Device     Start Block  Dbase        State Reloc Hot Spare
    BBB          0     No            Okay   Yes

在上面的例子中,我想得到

d6: Mirror
    Submirror 0: d61
      State: Okay
    Submirror 1: d62
      State: Okay

我应该如何在SunOS 5.9中这样做?

2 个答案:

答案 0 :(得分:0)

试试这个:

sed -n '/Mirror/,/Pass:/{/Pass:/d;p;}' file

输出:

d6: Mirror
    Submirror 0: d61
      State: Okay
    Submirror 1: d62
      State: Okay

答案 1 :(得分:0)

在您的示例中,您似乎只想在匹配后打印行。如果是这种情况,那么你可以使用这个awk脚本:

awk '/Mirror/ { c = 5 } c && c--' file

当模式匹配时,它将c设置为5,只要c大于0(接下来的4行),就会打印行。