selecionando uma string específica em um campo

2

Eu tenho este arquivo:

N104    F1810
N104    F3810
N104    F810
N104    F305

e um script para grep de uma entrada.

Script:

enter input
read input
cat file | grep $input

quando eu digito “810”, eu recebo a saída:

N104    F1810
N104    F3810
N104    F810

Eu preciso da saída:

N104  F810
    
por khalil saad 07.09.2013 / 14:47

2 respostas

2

grep -E "(^|[^0-9])$input($|[^0-9])" < file

Isso é $input precedido pelo início da linha ou por um não dígito e seguido pelo final da linha ou por um não dígito.

    
por 07.09.2013 / 14:55
0

Você também pode inscrever grep para fazer isso assim:

$ grep "[[:alpha:]]810" sample.txt 
N104    F810

Mais especificamente para o seu caso de uso:

$ input=810
$ grep "[[:alpha:]]$input" < sample.txt 
N104    F810

Eu não sei se você espera que o padrão grep seja capaz de lidar com a primeira coluna e, em caso afirmativo, em que capacidade.

$ input=104
$ grep "[[:alpha:]]$input" < sample.txt 
N104    F1810
N104    F3810
N104    F810
N104    F305

Isso faz uso do conjunto de caracteres alfabéticos de grep . Não tenho certeza de suas necessidades, mas isso permitirá que você pesquise qualquer um dos dígitos à direita na segunda coluna. Se você precisa de uma solução mais robusta, provavelmente precisará alterar a expressão regular.

Referências

por 07.09.2013 / 17:15