搜索文件,显示匹配和第一行

gri*_*mig 4 unix bash awk grep sed

我有一个逗号分隔的文本文件,其中包含第一行中的列标题:

column1;column2;colum3
foo;123;345
bar;345;23
baz;089;09
Run Code Online (Sandbox Code Playgroud)

现在我想要一个输出第一行和匹配行的命令.有没有比以下更短的方式:

head -n 1 file ; cat file | grep bar
Run Code Online (Sandbox Code Playgroud)

jco*_*ado 6

这应该做的工作:

sed -n '1p;2,${/bar/p}' file
Run Code Online (Sandbox Code Playgroud)

哪里:

  • 1p 将打印第一行
  • 2,$ 将从第二行匹配到最后一行
  • /bar/p 将打印匹配的行 bar

请注意,如果列名称中存在匹配项,则不会两次打印标题行.

  • 还有一种方法:`sed -e'1 {p; d;};/bar /!d'file` (2认同)