grep comando para encontrar 'palavras' que começam e terminam com * (por exemplo, * maneira *, * depois *)

0

Meu pensamento original era de que isso funcionaria

grep -w '\*.*\*' /path/file-name

Isso produz alguns bons resultados, mas não respeita a opção de palavra. Eu recebo linhas inteiras. Por exemplo, assim

[bold]*way* to the store to buy some groceries and *then*[bold]

e eu quero pegar isso

[bold]*way*[bold] to the store to buy some groceries and [bold]*then*[bold]

Outra que eu obtenho é essa, que eu pensei que não apareceria porque tem espaços (o que deve desqualificá-la porque eu quero apenas palavras ou coisas separadas por espaços)

* * *
    
por user308393 03.11.2015 / 15:01

1 resposta

2

Você precisa fazer a correspondência não-voraz : em uma expressão regular básica (BRE) ou estendida (ERE), é possível impor isso usando um conjunto de caracteres exclusivo [^*] no lugar do inclusivo .* ie

grep '\*[^*]*\*'

ou

grep '[*][^*]*[*]'

Se você prefere regex compatível com perl, isso tem um modificador não-ganancioso explícito ?

grep -P '\*.*?\*'
    
por steeldriver 03.11.2015 / 15:20