当我想在bash中查看某些内容的grep输出时,如何检索标题?

Pal*_*han 5 bash shell io-redirection

让我们假设我管道输出一个命令,并希望用grep过滤行,但也保留第一个作为标题的行.我看到有人输入类似于此的东西:

the command | (read l; echo$l) | grep bla | less
Run Code Online (Sandbox Code Playgroud)

并且它提取了第一行(标题),然后为匹配bla的行扫描文件的其余部分,并将其输出less用于检查.当然上面的命令不起作用但是这个想法,它的哪一部分是错的?

ric*_*ici 6

用awk:

command | awk 'NR==1||/bla/'
Run Code Online (Sandbox Code Playgroud)

感谢@doubleDown指出这{print}是不必要的,因为它是默认操作.

使用perl:

command | perl -ne 'print if $.==1 or /bla/'
Run Code Online (Sandbox Code Playgroud)

(如果你需要perl不规则表达式,可能有perl :))

  • 你不需要`{print}`因为它是默认动作. (2认同)