Selecionando linhas em um arquivo CSV com base no valor da coluna

0

Eu tenho um arquivo CSV com 4 colunas: Nome do item, Valor, Descrição e componente, que é bastante grande.

Eu tenho que gerar um modelo do arquivo CSV acima que exibe apenas as linhas do componente especificado (digamos, component = 'abc', que é o critério de pesquisa)

    
por Blessy 24.06.2013 / 06:07

3 respostas

3

Supondo que não haja vírgulas incorporadas, o awk é perfeito para isso.

awk -F , '$4 == "abc" { print }' input.csv
    
por 24.06.2013 / 06:10
1

Eu usei outra ferramenta no csvkit: csvgrep .

$ csvgrep -c 4 -m "abc" data.csv > test.csv

Este é o conteúdo resultante do arquivo test.csv :

Itemname,Value,Description,Component
33,34,35,abc

-c é para designar a coluna para procurar. você também pode usar o cabeçalho, apenas certifique-se de soletrá-lo exatamente da mesma forma, maiúsculas e minúsculas:

$ csvgrep -c Component -m "abc" data.csv > test.csv

Itemname,Value,Description,Component
33,34,35,abc

e -m é padrão de correspondência, tenho certeza de que há uma maneira de usar expressões regulares se você quiser aprofundar sua correspondência. então é colocado em um novo arquivo chamado test.csv .

    
por 23.08.2018 / 23:48
0

Com o seguinte data.csv :

Itemname,Value,Description,Component
1,2,3,4
5,6,7,8
9,10,11,12
13,14,15,16
17,18,19,20
21,22,23,24
25,26,27,28
29,30,31,32
33,34,35,abc
37,38,39,40
41,42,43,44
45,46,47,48
49,50,51,52
53,54,55,56
57,58,59,60
61,62,63,64
65,66,67,68
69,70,71,72
73,74,75,76
77,78,79,80
81,82,83,84
85,86,87,88
89,90,91,92
93,94,95,96
97,98,99,100

Usando csvkit :

$ csvsql --query "SELECT * FROM data WHERE Component = 'abc'" data.csv
Itemname,Value,Description,Component
33,34,35,abc
    
por 07.02.2017 / 15:18

Tags