Não está funcionando “+” na sintaxe grep regex [duplicata]

3

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?

    
por heroys6 14.10.2016 / 12:11

3 respostas

6

Você precisa informar grep se estiver usando uma expressão regular estendida:

grep -E '.+' file1

A Expressão regular básica padrão por grep sem -E ) equivalente à Expressão regular estendida O operador + é \{1,\} , embora algumas implementações (como as do GNU) também reconheçam \+ para isso como uma extensão (e você sempre pode usar ..* ).

(Observe que, neste caso específico, grep -E .+ é equivalente a grep -E . quando você está procurando substrings correspondentes à regex quando não está usando a opção -x . Em muitos sistemas egrep é fornecido como um comando equivalente para grep -E , mas como Graeme pontos isto é obsoleto .)

    
por 14.10.2016 / 12:12
2

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

grep '.\+' file1
    
por 14.10.2016 / 13:07
1

Eu acredito que + é um metacaractere de expressão regular estendida. Tente usar egrep .

    
por 14.10.2016 / 15:01