Note que o GNU grep suporta \w
para correspondência de caracteres de palavras (alfabetos, dígitos e sublinhados), então você pode facilmente combinar apenas caracteres de palavras na parte entre os asteriscos:
grep -o '\*\*\w*\*\*'
Estou tentando pegar palavras de um arquivo:
$ grep -o '\*\*[^*]*\*\*' Principles_20_LifePrinciples.md | grep -v -e "Origin" -e "Etymology"
**circumstance**
**case**
**condition**
**Anxiety**
**anxiety**
**the state of feeling nervous or worried that sth bad is going to happen**
**a worry or fear about sth**
**a strong feeling of wanting to do sth or of wanting sth to happen**
O resultado que pretendo é obter apenas palavras:
**circumstance**
**case**
**condition**
**Anxiety**
**anxiety**
Código refatorado com quantificadores especificados {,20}
:
$ grep -E -o '\*\*[^*]{,20}\*\*' Principles_20_LifePrinciples.md
Infelizmente, não retorna nada.
Como resolver esse problema?
Note que o GNU grep suporta \w
para correspondência de caracteres de palavras (alfabetos, dígitos e sublinhados), então você pode facilmente combinar apenas caracteres de palavras na parte entre os asteriscos:
grep -o '\*\*\w*\*\*'
Você está quase lá com seu primeiro comando grep
.
Se você precisa apenas corresponder à linha que tenha uma única palavra, adicione um espaço na [^...]
regex:
$ grep -o '\*\*[^* ]*\*\*' file
**circumstance**
**case**
**condition**
**Anxiety**
**anxiety**