Não funciona "+" na sintaxe grep regex

Não funciona "+" na sintaxe grep regex

Estou no Ubuntu 16.04

Tentando: grep '.*' file1

Saída: file nu-mber o-ne second string

Tentando:grep '.+' file1

A saída está ausente

Por que o plus não está funcionando?

Responder1

Você precisa contargrepvocê está usando uma expressão regular estendida:

grep -E '.+' file1

O padrãoExpressão Regular Básica(conforme usado por grepsem -E) equivalente aoExpressão regular estendida +operador é \{1,\}embora algumas implementações (como as do GNU) também reconheçam \+isso como uma extensão (e você sempre pode usar ..*).

(Observe que, neste caso específico, grep -E .+é equivalente a grep -E .procurar substrings que correspondam ao regex quando não estiver usando a -xopção. Em muitos sistemas, egrepé fornecido como um comando equivalente a grep -E, mas comoGraeme apontaisso éobsoleto.)

Responder2

Com o GNU grep (padrão no Ubuntu), você também pode ativar o comportamento estendido com uma barra invertida. Por exemplo:

grep '.\+' file1

Responder3

Acredito que + é um metacaractere de expressão regular estendido. Tente usar egrep.

informação relacionada