CSV grep 但保留标题

Ven*_*tta 3 linux csv awk grep

我有一个如下所示的 CSV 文件:

A,B,C
1,2,3
4,4,4
1,2,6
3,6,9
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法来 grep B 列为 2 的所有行,并保留标题?例如,我希望输出像

A,B,C
1,2,3
1,2,6
Run Code Online (Sandbox Code Playgroud)

我在 linux 下工作

Gur*_*uru 5

使用 awk:

awk -F, 'NR==1 || $2==2' file
Run Code Online (Sandbox Code Playgroud)

NR==1 -> 如果第一行,$2==2 -> 如果第二列等于 2。如果上述任一为真,则打印行。

要使用标题列名称选择列:

awk -F, -v col="B" 'NR==1{for(i=1;i<=NF;i++)if($i==col)break;print;next}$i==2'  file
Run Code Online (Sandbox Code Playgroud)

将 B 替换为要检查的列的适当名称。