我一边有一个单词集,另一边有一个文件。我需要他们的交集。即在文件中至少出现一次的单词。
我可以用
提取匹配的行sed -rn 's/(word1|word2|blablabla|wordn)/\1/p' myfile.txt
但我不能前进。
感谢您的帮助,Olivier
答案 0 :(得分:1)
如果我找到你,你只需要将sed
结果传递给uniq
:
sed -rn 's/.*(word1|word2|blablabla|wordn).*/\1/p' myfile.txt | uniq
此外,您需要匹配sed中的整行,以便只获得所需的单词作为输出。这就是为什么我将.*
放在模式的前面和末尾。
答案 1 :(得分:1)
也许' grep可以在这里工作吗?
grep -o -E 'word1|word2|word3' file.txt | sort -u
答案 2 :(得分:1)
你可以使用grep和sort来实现:
grep -o 'word1\|word2\|word3' myfile.txt | sort -u
-o
开关使grep只输出匹配的字符串而不是整行。 sort -u
对匹配的单词进行排序并删除重复项。