如何限制 grep 仅在某一列的标记下方进行搜索?

如何限制 grep 仅在某一列的标记下方进行搜索?

如何使用 grep 仅搜索标记下方列的值?例如在以下 CSV 文件中:

ABC  
1     4     5  
2     3     0  
1     3     6

...我怎样才能仅获取 B 列的值?

答案1

我不确定您是否可以使用 grep 来执行此操作,但是您可以使用awk

awk '{ print $2}' file.csv

它将打印出文件的第二列。


编辑

如果不想打印出列名(B在示例中),您可以对 FNR 设置条件:

FNR 当前输入文件中的输入记录号。

像这样:

awk ' FNR > 1 { print $2}' file.csv

编辑2

如果您的文件是真正的 CSV(逗号分隔值)文件,则必须提供字段分隔符参数(-F--field-separator):

awk -F',' ' FNR > 1 { print $2}' file.csv

答案2

根据问题在命令中使用 grep。

cat file.csv | cut -d " " -f 2 | grep -o '[0-9]'

当 csv 为逗号且 -f 2 为第二个字段时,cut -d(分隔符为“”)使用空格或“,”

grep -o 是 --only-matching

编辑以允许非数字字段丢失 grep

cat file.csv | cut -d " " -f2 | tail -n +2

相关内容