Use o quantificador especificado no grep para recuperar o vocabulário satisfeito [fechado]

1

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?

    
por JawSaw 27.03.2018 / 07:33

2 respostas

2

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*\*\*'
    
por muru 27.03.2018 / 07:51
0

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**
    
por oliv 27.03.2018 / 07:47