tl; dr consulte a solução do fd0
Eu olhei na página man antes de perguntar, mas não consegui perceber a informação relevante, já que percebi que ela não difere significativamente da dos Linuxes. Mas,
$ man sed
...
-E Interpret regular expressions as extended (modern) regular
expressions rather than basic regular expressions (BRE's). The
re_format(7) manual page fully describes both formats.
$ man re_format
...
Obsolete (“basic”) regular expressions differ in several respects. ‘|’
is an ordinary character and there is no equivalent for its functional‐
ity. ‘+’ and ‘?’ are ordinary characters, and their functionality can be
expressed using bounds (‘{1,}’ or ‘{0,1}’ respectively). Also note that
‘x+’ in modern REs is equivalent to ‘xx*’. The delimiters for bounds are
‘\{’ and ‘\}’, with ‘{’ and ‘}’ by themselves ordinary characters.
E tentei usar {1,}
, apenas esqueci de sair de chaves. Então, certamente a solução do fd0 é geralmente a melhor maneira possível. Mas outros seriam:
$ echo ' found' | sed -n '/[[:blank:]]\{1,\}/p'
found
$ echo ' found' | sed -n '/[[:blank:]][[:blank:]]*/p'
found
No entanto, não tenho certeza do que eles queriam dizer com
Also note that ‘x+’ in modern REs is equivalent to ‘xx*’
Ou seja, como era em não-modernos.
Além disso, a página de manual grep
não mencionou re_format
entry, o que aparentemente significa que possui sua própria implementação de expressões regulares. Por falar nisso, era% GNUgrep
, em oposição a sed
.