O *
corresponderá a zero ou mais do caractere anterior ou padrão.
Isso significa que - * amount
corresponderá a
-
- amount
-
- amount
-
- amount
- (etc.)
Para corresponder os números, como você os escreveu, use - [0-9,]+ amount
como padrão. O +
forçará pelo menos uma correspondência da expressão regular anterior e [0-9,]
corresponderá a qualquer dígito ou vírgula.
Dado o seguinte arquivo:
- 0 amount
- 122,000,000 amount
- 50,000 amount
- amount
- amount
- some amount
Isso funcionará:
$ grep -E -e '- [0-9,]+ amount' file
- 0 amount
- 122,000,000 amount
- 50,000 amount
O -E
é necessário porque +
é uma expressão regular estendida, e o -e
é necessário porque senão o -
no padrão seria interpretado como uma opção para grep
( -e
significa a próxima coisa é uma expressão regular para grep
se aplicar à sua entrada).
Você também pode ancorar o padrão no início e no final da linha:
$ grep -E '^ - [0-9,]+ amount$' file
Isso significa que o -e
não é mais necessário e garantirá que a linha comece com um espaço seguido pelo traço e o número etc. como antes. A string amount
deve ser a última coisa na linha (ancoramos a palavra ao final da linha com $
).