【问题标题】:Using grep to find words使用 grep 查找单词
【发布时间】:2019-04-18 05:13:20
【问题描述】:

在 alice.txt 中找到至少包含 17 个单词的行。

提示 1:要检查单词是否已结束,请查找以下内容 字符:[, ; : ’ .](注意列表中还有空格)

提示 2:您的代码应返回 13 行

第一次尝试输出 15 个单词而不是 17 个单词,并且有 13 行 第二次尝试没有输出任何东西,但我认为总体思路是正确的,除非我遗漏了什么......

第一次尝试:

grep -Ein "([a-z]+[, ;:'\.]){15,}" alice.txt

第二次尝试:

grep -Ein "(\b[a-z]+\b){17,}" alice.txt

预期结果是正确的,但只产生了 15 个修饰符,而不是问题中要求的 17 个。然而,代码返回 13 行

【问题讨论】:

  • edit 您的问题要包含alice.txt 的样本,否则我们无法测试潜在的解决方案。

标签: shell unix grep


【解决方案1】:

以下是在 UNIX 中使用 GNU awk 进行 FPAT 的真正方法:

awk -v FPAT='\\w+' 'NF>16'

例如:

$ echo 'foo bar, etc.' | awk -v FPAT='\\w+' '{print NF}'
3
$ echo 'foo bar, etc.' | awk -v FPAT='\\w+' 'NF>2'
foo bar, etc.
$ echo 'foo bar, etc.' | awk -v FPAT='\\w+' 'NF>3'
$

【讨论】:

    猜你喜欢
    • 2014-01-30
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    • 2017-04-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多