Como pesquisar um arquivo de texto por um número inteiro específico

Como pesquisar um arquivo de texto por um número inteiro específico

Existe uma maneira simples de pesquisar em um arquivo de texto (código-fonte) todas as instâncias de um número inteiro específico. Isso não deve ser acionado em números maiores que incluam o número inteiro como uma substring, mas não pode simplesmente excluir essas linhas, pois elas podem conter ambos os casos:

procurando por '6'...

int a=6; // found
int b=16; // not found (despite the '6' in '16')
int c=6, d=16; // found

Estou realmente procurando uma abordagem de linha de comando para isso, mas também estou curioso para saber se existe umSoftware LivreEditor do tipo GUI que fará isso.

Responder1

grep -E '\b6\b'

\bé um "limite de palavra"

Editar: depois de apontar @nobar na direção certa, ele encontrou/apontou a opção de atalho -w(word-regexp) na página de manual, o que simplifica o acima para:

grep -w 6

Se usado muito, você poderia usar uma função semelhante a

wgrp(){ grep -w "$1" "$2"; }

Nota (para @glenn-jackman): Se você não citar "$2"aqui, poderá usar a função como filtro de pipeline. Mas sim, não funcionará com nomes de arquivos com espaços.

Depois de ler mais uma ótima resposta de @Gilles, proponho agora

igrp(){ grep -E "(^|[^0-9])$1($|[^0-9])" "$2"; }

Responder2

Você pode pesquisar um número inteiro específico com uma expressão regular. Procure os dígitos precedidos pelo início dos dados ou por um caractere que não seja um dígito e, da mesma forma, após os dígitos.

grep -e '^6$' -e '^6[^0-9]' -e '[^0-9]6$' -e '[^0-9]6[^0-9]'   # BRE syntax
grep -E '(^|[^0-9])6($|[^0-9])'                                # ERE syntax

Uma pesquisa de palavras inteiras, conforme sugerido em outras respostas, perde resultados como foo6bar. (Isso pode não ser um problema para o seu caso de uso, mas foi o que você perguntou.)

Qualquer editor ou visualizador de texto meio sério (por exemplo less) possui pesquisa de expressão regular. Verifique sua documentação para ver qual sintaxe regex ela usa.

Responder3

Acho que essa não era uma necessidade tão obscura. Meu editor de programação regular,plumasuporta isso através da caixa de diálogo "localizar" usando a opção "Corresponder apenas à palavra inteira". Tenho certeza de que muitos outros editores também têm isso - embora no momento aparentemente não seja o ancestral de Plumagedit.

insira a descrição da imagem aqui

informação relacionada