Como restringir o grep para pesquisar somente abaixo de um token de uma coluna?

0

Como posso usar o grep para pesquisar somente os valores de uma coluna abaixo de um token? Por exemplo, no seguinte arquivo CSV:

A     B     C  
1     4     5  
2     3     0  
1     3     6

... como posso obter apenas os valores da coluna B?

    
por Will 13.12.2013 / 02:54

2 respostas

4

Não tenho certeza se você pode fazer isso com o grep, mas você pode usar awk :

awk '{ print $2}' file.csv

Ele imprimirá a segunda coluna do seu arquivo.

EDITAR

Se você não deseja imprimir o nome da coluna ( B no exemplo), você pode definir uma condição no FNR:

FNR The input record number in the current input file.

Assim:

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

EDIT 2

Se o seu arquivo for um arquivo CSV real (valores separados por vírgula), você deverá fornecer o argumento do separador de campo ( -F ou --field-separator ):

awk -F',' ' FNR > 1 { print $2}' file.csv
    
por 13.12.2013 / 11:27
2

Usando o grep no comando conforme a pergunta.

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

Onde cut -d (delimitador é "") usando espaço em branco ou "," quando o csv é vírgula e -f 2 é o segundo campo

grep -o é - somente correspondência

Editar para permitir o campo não numérico perde grep

cat file.csv | cut -d " " -f2 | tail -n +2
    
por 13.12.2013 / 12:28