O comando grep para pesquisar apenas uma coluna do arquivo CSV

0

Acabei de começar a aprender Linux e todos os comandos relativamente básicos no último mês, mas estou tendo problemas para usar o comando Grep. Atualmente estou preso em como usar o comando Grep para pesquisar apenas uma coluna de um arquivo CSV para uma seqüência numérica que começa com dois números especificados. Eu estou tentando especificamente listar as linhas que têm um código postal que começa com "48", cujo código postal, nesse caso, está incluído na sétima coluna do arquivo CSV. Há também outros dados numéricos em cada linha, e é por isso que preciso usar o comando Grep apenas na coluna "Provedor". Qualquer ajuda para me apontar na direção certa será apreciada, já que tenho tentado descobrir isso há algum tempo e acho que posso estar pensando um pouco sobre o que preciso fazer.

Veja um exemplo dos dados de CSV que estou usando:

    Provider  Hospital        Total Discharges  Average Covered Charges
    49444     MI - Muskegon   53                18694.9
    49007     MI - Kalamazoo  40                20494.25
    48075     MI - Royal Oak  14                20386.28
    48124     MI - Dearborn   34                34338.47
    
por JoeObe25 28.01.2018 / 19:05

2 respostas

1

grep não tem um conceito de campos ou colunas, então você teria que escrever um padrão que de alguma forma realiza isso. No caso geral, isso ficará feio, mas se o número desejado estiver no início da linha, como a amostra parece indicar, é bastante simples:

grep -Ee '^[[:space:]]*48[0-9]+[[:space:]]' file

Isso procuraria linhas que começassem com qualquer espaço em branco, um 4 , um 8 , alguns outros números e qualquer caractere de espaço em branco.

Para ver campos específicos, awk é melhor. Por padrão, ele divide as linhas em campos em qualquer espaço em branco. Isso procuraria por linhas onde o primeiro campo contém 48 e alguns outros números:

awk '$1 ~ /^48[0-9]+$/' file

Altere o $1 para $7 ou o que for para usar outro campo.

    
por 28.01.2018 / 19:26
-1

Assumindo que seu arquivo é denominado test.csv :

grep -E "48[0-9]{3}" test.csv

grep -E pesquisa uma string usando um regexp

48 é o número inicial que você precisa

[0-9] é um número entre 0 e 9 e {3} significa 3 vezes

    
por 28.01.2018 / 19:09