我有一个名为“dictionary.txt”的文件,其中包含所有可能单词的列表,例如:
a
aardvark
act
anvil
ate
...
我如何搜索这个,只打印包含有限列表中字母的行,例如,如果列表包含字母“c”、“a”和“t”,搜索将显示这些词:
a
act
cat
如果搜索字母“e”、“a”和“t”,则只能从“dictionary.txt”中找到这些词:
a
ate
eat
tea
我管理的唯一解决方案是:
- 创建所有可能字母的列表。
- 从这个列表中删除搜索到的字母,留下一个我不想搜索的字母列表。
- 使用 for 循环循环每个字母,从字典中删除包含这些字母的所有行。
- 打印字典中剩余的单词。
这个解决方案非常慢。另外,我需要将此代码与其他语言一起使用,这些语言有数千种可能的字符,因此这种搜索方法特别慢。
我怎样才能只打印“dictionary.txt”中只包含搜索字母的那些行,而没有其他内容?
最佳答案
grep '^[eat]*$' dictionary.txt
解释:
^
= 表示行首的标记
$
= 表示行尾的标记
[abc]
= 字符类(“匹配这些字符中的任何一个”)
*
= 字符类的乘数(零次或多次重复)
关于regex - 如何打印仅包含 BASH 列表中字符的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23740463/