我需要获取程序的多行输出,匹配一个字符串,并返回所有匹配项的前一行。
程序输出示例:
$ jack_lsp -p
firewire_pcm:analog-1_out
properties: input,physical,terminal,
firewire_pcm:analog-2_out
properties: input,physical,terminal,
firewire_pcm:analog-1_in
properties: output,physical,terminal,
firewire_pcm:analog-2_in
properties: output,physical,terminal,
$
Run Code Online (Sandbox Code Playgroud)
例如,我需要匹配“输入”,并返回所有匹配项的前一行。所以在这个例子中,预期的输出是:
firewire_pcm:analog-1_out
firewire_pcm:analog-2_out
Run Code Online (Sandbox Code Playgroud)
这是我所拥有的,但它只返回第一个匹配项:
$ jack_lsp -p | grep -B1 input | head -1
firewire_pcm:analog-1_out
$
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?