在grep中使用指定的quanlifier来检索满意的词汇表

时间:2018-03-27 01:35:28

标签: bash grep

我尝试从文件中抓取单词:

    $ 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**

我想要的结果是:

  # only words
    **circumstance**
    **case**
    **condition**
    **Anxiety**
    **anxiety**

使用指定的quatifiers {,20}重构代码:

$ grep -o '\*\*[^*]{,20}\*\*' Principles_20_LifePrinciples.md

不幸的是,它返回None。

如何解决这样的问题?

3 个答案:

答案 0 :(得分:0)

您可以添加-E标志:

$ grep -E -o '\*\*[^*]{,20}\*\*' input | grep -v -e "Origin" -e "Etymology"
**circumstance**
**case**
**condition**
**Anxiety**
**anxiety**

您也可以只匹配仅包含字母字符的文字:

$ grep -o '\*\*[[:alpha:]]*\*\*' input

对于input,我使用了原始输出。

答案 1 :(得分:0)

因为你已经

grep -o '\*\*[^*]*\*\*' Principles_20_LifePrinciples.md

[^*]*中添加一个空格,即。 [^* ]*

答案 2 :(得分:0)

请注意 {start,end},不应省略起始限定符。

$ grep -E -o '\*\*[^*]{0,20}\*\*' input | grep -v -e "Origin" -e 
"Etymology"
**circumstance**
**case**
**condition**
**Anxiety**
**anxiety**