Como encontrar uma linha começando com 'a' e terminando com 'c' usando grep?

1

Eu tenho um arquivo chamado newfile . O conteúdo deste arquivo é:

abc
xyz
abc

Agora, quero encontrar linhas que comecem com a e terminem com c . Eu digitei o seguinte comando, mas os resultados não são os mesmos que eu esperava:

grep -E   '^ac$' newfile

O problema com este comando é que quando eu uso ^ac$ o comando interpreta como começando com ac ao invés de começar com a .

    
por Kishan Kumar 02.05.2018 / 07:34

1 resposta

4

The problem with this command is that when I use ^ac$ the command interprets it as starting with 'ac' instead of starting with 'a'.

Não realmente. Como você usou a $ anchor , está pesquisando as linhas que terminam logo após a string ac , portanto, apenas linhas contendo exatamente ac e nenhum outro caractere são correspondidos.

Para permitir qualquer caractere entre essas letras, use a regex para qualquer contagem de qualquer caractere: .* (Ou se você quiser permitir apenas um caractere como em abc no exemplo, use . sem quantificadores como * .)

A propósito, você pode simplesmente deixar de fora a opção -E para este regex, já que ele não envolve qualquer sintaxe que seja diferente nessas duas variantes.

Então o resultado é:

grep '^a.*c$' newfile
    
por Melebius 02.05.2018 / 07:40