首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >grep /usr/share/dict/word

grep /usr/share/dict/word
EN

Stack Overflow用户
提问于 2019-10-02 13:32:11
回答 2查看 1.2K关注 0票数 1

我有一个文本文件:

代码语言:javascript
复制
Butterfly

[tab][space]Bridge

space-12234

%%%^^%^%^^%

我试图只保留包含" words“文件(/usr/share/dict/words)中的字典词的行。

输出将如下所示:

代码语言:javascript
复制
Butterfly

[tab][space]Bridge

space-12234

我试过了

代码语言:javascript
复制
words='/usr/share/dict/words'
grep ??  $words $1 > ouputfile
EN

回答 2

Stack Overflow用户

发布于 2019-10-02 13:37:30

您可以使用-f选项:

-f文件,--file=文件

从文件中获取模式,每行一个。如果该选项多次使用或与-e (--regexp)选项相结合,则搜索给定的所有模式。空文件包含零模式,因此不匹配。

代码语言:javascript
复制
grep -f "$words" "$1" > outputfile

您也可能对-w-F感兴趣。

-w--word-regexp

只选择那些包含构成整个单词的匹配的行。测试是,匹配的子字符串必须位于行的开头,或者前面必须有一个非单词组成字符。类似地,它必须在行尾或后面跟着一个非单词组成字符。单词组成字符是字母、数字和下划线.如果还指定了-x,则此选项无效。

-F--fixed-strings

将模式解释为由新行分隔的固定字符串列表(而不是正则表达式),其中任何一行都要匹配。

票数 3
EN

Stack Overflow用户

发布于 2019-10-02 14:12:12

这是一个给awk的。它以-is格式打印精确的匹配,但部分匹配,后面是(a,实际上)最长的匹配单词(对于如何处理部分匹配没有任何更正确的定义):

代码语言:javascript
复制
$ awk '
NR==FNR {
    words[tolower($1)]
    next
}
{
    if(tolower($1) in words)
        print
    else {
        for(i in words)
            if(($0~i)&&length(i)>length(best))
                best=i
        if(best) {
            print $0,best
            best=""
        }
    }
}' /usr/share/dict/words file

输出(与原始数据一起):

代码语言:javascript
复制
Butterfly
         Bridge
space-12234 space
ldfkalap kala
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58202621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档