每次找到匹配项时,我都想打印上一行。我知道grep -A
和-B
选项。但是我的 Solaris 5.10 机器不支持这些选项。
我想要只使用sed
.
Foo.txt
:
Name is : sara
age is : 10
Name is : john
age is : 20
Name is : Ron
age is : 10
Name is : peggy
age is : 30
Run Code Online (Sandbox Code Playgroud)
Out.txt
:
Name is : sara
Name is : Ron
Run Code Online (Sandbox Code Playgroud)
我试图匹配的模式是age is : 10
.
我的环境,Solaris 5.10。
因此,使用 grep 我们可以使用 -A 来获取匹配“之后”的行,我们可以使用 -B 获取匹配“之前”的行。我们也可以使用 -C 来获取前后的行。
我有一些这样的数据
boring data
boring data
boring data
interesting value
MARK
boring data
boring data
boring data
interesting value
MARK
Run Code Online (Sandbox Code Playgroud)
我想得到这样的输出:
interesting value
interesting value
Run Code Online (Sandbox Code Playgroud)
使用选项 -BI 得到这个:
# cat somefile | grep -B 1 MARK
interesting value
MARK
interesting value
MARK
Run Code Online (Sandbox Code Playgroud)
我想完全排除 MARK 线。