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.
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
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.
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.