Procura pela string exata na coluna [duplicada]

2

Eu tenho um arquivo com palavras separadas por ',' nas linhas, cada linha tem o mesmo número de palavras, digamos 4. Então, existem na forma de:

something1,something2,something3,something4

Eu quero pesquisar a linha que contém na quarta coluna exatamente something4 , mas como faço isso se houver outra linha que seja assim:

something1,something2,something3,1_something4

com o grep eu vou pegar ambas as linhas, mas eu só quero a linha que tem no quarto elemento exatamente something4 o que devo fazer?

    
por C. Cristi 21.11.2018 / 20:35

3 respostas

10

Você pode usar awk para isso:

awk -F, '$4 == "something4"' file.csv

Isso deve imprimir toda a linha para qualquer linha em que a quarta coluna seja exatamente something4

Para passar uma variável para awk , você precisa fazer o seguinte:

var1=$(echo "something,something4" | cut -f2 -d,)
awk -F, -vsearch="$var1" '$4 == search' file.csv
    
por 21.11.2018 / 20:39
10

Ou, como há apenas quatro colunas e você quer algo específico no último,

grep ',something4$' < input

(postado no caso de você estar realmente bem com o grep; o awk é uma ótima solução aqui).

    
por 21.11.2018 / 20:45
0

Geralmente, para esse tipo de problema, você pode usar cut para obter apenas a coluna desejada e, em seguida, grep sobre isso.

echo something1,something2,something3,something4 | cut -d , -f 4 | grep '^something4$'

    
por 22.11.2018 / 12:58