在 SunOS 5.9 中 grep 周围的行
grep surrounding lines in SunOS 5.9
尝试使用 SunOS 5.9 grep 周围的行,通常我会使用带有 -B 和 -A 的 grep 来这样做:
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
我的示例将尝试使用关键字 "Mirror" 和代表其子镜像状态的那些行进行 grep。 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 中执行此操作?
试试这个:
sed -n '/Mirror/,/Pass:/{/Pass:/d;p;}' file
输出:
d6: Mirror
Submirror 0: d61
State: Okay
Submirror 1: d62
State: Okay
从您的示例来看,您似乎只想在匹配 之后打印行 。如果是这样,那么您可以使用这个 awk 脚本:
awk '/Mirror/ { c = 5 } c && c--' file
当模式匹配时它设置 c
为 5,只要 c
大于 0 就打印行(所以接下来的 4 行)。
尝试使用 SunOS 5.9 grep 周围的行,通常我会使用带有 -B 和 -A 的 grep 来这样做:
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
我的示例将尝试使用关键字 "Mirror" 和代表其子镜像状态的那些行进行 grep。 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 中执行此操作?
试试这个:
sed -n '/Mirror/,/Pass:/{/Pass:/d;p;}' file
输出:
d6: Mirror Submirror 0: d61 State: Okay Submirror 1: d62 State: Okay
从您的示例来看,您似乎只想在匹配 之后打印行 。如果是这样,那么您可以使用这个 awk 脚本:
awk '/Mirror/ { c = 5 } c && c--' file
当模式匹配时它设置 c
为 5,只要 c
大于 0 就打印行(所以接下来的 4 行)。