我有一个文本文件:
Butterfly
[tab][space]Bridge
space-12234
%%%^^%^%^^%我试图只保留包含" words“文件(/usr/share/dict/words)中的字典词的行。
输出将如下所示:
Butterfly
[tab][space]Bridge
space-12234我试过了
words='/usr/share/dict/words'
grep ?? $words $1 > ouputfile发布于 2019-10-02 13:37:30
您可以使用-f选项:
-f文件,--file=文件
从文件中获取模式,每行一个。如果该选项多次使用或与-e (--regexp)选项相结合,则搜索给定的所有模式。空文件包含零模式,因此不匹配。
grep -f "$words" "$1" > outputfile您也可能对-w和-F感兴趣。
-w,--word-regexp
只选择那些包含构成整个单词的匹配的行。测试是,匹配的子字符串必须位于行的开头,或者前面必须有一个非单词组成字符。类似地,它必须在行尾或后面跟着一个非单词组成字符。单词组成字符是字母、数字和下划线.如果还指定了-x,则此选项无效。
-F,--fixed-strings
将模式解释为由新行分隔的固定字符串列表(而不是正则表达式),其中任何一行都要匹配。
发布于 2019-10-02 14:12:12
这是一个给awk的。它以-is格式打印精确的匹配,但部分匹配,后面是(a,实际上)最长的匹配单词(对于如何处理部分匹配没有任何更正确的定义):
$ 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 kalahttps://stackoverflow.com/questions/58202621
复制相似问题