我有一个如下所示的 CSV 文件:
A,B,C
1,2,3
4,4,4
1,2,6
3,6,9
有没有一种简单的方法可以grep所有B列为2的行,并保留标题?例如,我希望输出像
A,B,C
1,2,3
1,2,6
我在linux下工作
最佳答案
使用 awk:
awk -F, 'NR==1 || $2==2' file
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
将 B 替换为您要检查的列的适当名称。
关于linux - CSV grep 但保留标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13072457/