Como grep para uma correspondência exata para string com caracteres não alfa?

1

Portanto, o grep a seguir corresponde a duas linhas.

grep -w 1.2.3.4 testfile.csv 
1.2.3.4,Jim,Jonson,000000
1.2.3.4.5,George,Doe,FFFFF

Como posso fazer corresponder exatamente e somente a palavra específica? Neste exemplo somente 1.2.3.4 .
Vamos supor que os espaços em branco no início ou ao lado do separador de vírgulas pode aparecer e eu gostaria que este seja, se possível, cross-plataforma grep.

    
por Jim 27.03.2018 / 16:22

1 resposta

4

Como observado por don_crissti nos comentários. O problema no seu caso é que o padrão que tenta corresponder a 1.2.3.4 não corresponde às condições da palavra atendidas por -w

Use o modo PCRE no seu GNU grep se for suportado. Usando uma visão positiva

grep -P '^1\.2\.3\.4(?=,)' file

ou como recomendado por Sundeep sem usar o PCRE, apenas

grep '^1\.2\.3\.4,' file

Também para correspondência mais exata de string, awk é mais fácil de fazer

awk -F, -v var="1.2.3.4" '$1==var' file
    
por 27.03.2018 / 16:48