grep /usr/share/dict/words



我有一个文本文件:

Butterfly
[tab][space]Bridge
space-12234
%%%^^%^%^^%

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

输出将如下所示:

Butterfly
[tab][space]Bridge
space-12234

我试过了

words='/usr/share/dict/words'
grep ??  $words $1 > ouputfile

>您可以使用-f选项:

-f文件--file=文件

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

grep -f "$words" "$1" > outputfile

您可能还对-w-F感兴趣:

-w--word-regexp

仅选择包含以下匹配项的行 形成整个单词。测试是匹配 子字符串必须位于 行,或前面有非单词成分 字符。同样,它必须在最后 或后跟非单词成分 字符。单词组成字符是字母, 数字和下划线。此选项没有 如果还指定了-x则生效。

-F--fixed-strings

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

这是一个尴尬的。它按原样打印完全匹配,但部分匹配,后面有(实际上(最长的匹配词(没有关于如何处理部分匹配的更适当的定义(:

$ 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

输出(包含您的原始数据(:

Butterfly
Bridge
space-12234 space
ldfkalap kala

最新更新