Usando egrep no Bash

0

No código a seguir, estou recebendo um erro e não tenho certeza do motivo:

[name@unix ~]$cat test123
123
456
789
1011
1213
[name@unix ~]$egrep ^[0-9]{1,3}$ test123
egrep: ^[0-9]3$: No such file or directory
[name@unix ~]$egrep ^[0-9]{3}$ test123
123
456
789
[name@unix ~]$

Quando eu faço $ man egrep, eu mostro isso:

{n} O item anterior é correspondido exatamente n vezes. {n,} O item anterior é correspondido n ou mais vezes. {n, m} O item precedente é correspondido pelo menos n vezes, mas não mais que m vezes.

    
por Ben 09.04.2015 / 01:41

1 resposta

1

Seu shell está interpretando {1,3} como uma expansão de cinta , resultando em grep vendo

grep ^[0-9]1$ ^[0-9]3$ test123

como resultado, o que leva ^[0-9]3$ a ser um argumento de nome de arquivo adicional. Você deve sempre citar sua regex para evitar essa expansão pelo shell, ou seja,

egrep '^[0-9]{1,3}$' test123
    
por 09.04.2015 / 01:45

Tags