我有一个文本文件:
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