Assumindo que você quer dizer zero ou mais dígitos no início de uma linha seguida por um a
(ou dois dígitos, abordaremos mais tarde), então sim , este comando funcionará:
grep '^[0-9]*a'
Corresponde a todas as linhas no arquivo de entrada:
$ grep '^[0-9]*a' file
1a
1aa
2a
2aa
Se (e eu fornecer uma solução, se não é isso que você quer dizer) você quer dizer a linha inteira , então, isso funcionará:
$ grep '^[0-9]*a$' file
$ grep -x '[0-9]*a' file
1a
2a
Para forçar um ou mais dígitos , use um dos seguintes:
grep '^[0-9][0-9]*a'
grep '^[0-9]\{1,\}a'
grep -E '^[0-9]+a'
Mas se o que você quer dizer é combinar uma linha que começa com um dígito, tem um a e possivelmente muitas outras coisas, então: use:
$ grep '^[0-9]\{1,\}a[^a]' file
Que, para um arquivo como este:
$ cat file
1a
1aa
123a
1234aa
a
aa
2a
2aa
123afgr
123aahtr
Aceita apenas estas linhas:
$ grep -E '^[0-9]+a([^a]|$)' file
1a
123a
2a
123afgr
Existem várias soluções possíveis para dois a
, e este é um exemplo simples:
$ grep -E '^[0-9]+aa([^a]|$)' file
1aa
1234aa
2aa
123aahtr
E, se você remover a start
anchor, a correspondência será ancorada até o final:
$ cat file
1a
1aa
123a
1234aa
a
aa
2a
2aa
123afgr
123aahtr
abc20cb1aa
abc20cb1a
abc20cb2aa
abc20cba
$ grep -E '[0-9]+aa([^a]|$)' infile
1aa
1234aa
2aa
123aahtr
abc20cb1aa
abc20cb2aa