一种更快的方法来找出列表中的任何单词是否是较长单词的子字符串

A faster way to find out if any word in a list is a substring in a longer word

我有什么

我想知道的

目前我有 L 分成文件,每个文件一个字长 16.txt, 15.txt ... 04.txt
然后我从 n.txt --> 04.txt 遍历这些文件,基本上做

cat n.txt | while read w; do if [[ $s =~ $w ]] ; then echo $w; fi; done

速度慢得令人痛苦更好的方法来做到这一点。

附加信息:

我不太懂语言(se 标签),但伪代码也可以

您可以在不拆分列表的情况下使用 grep:

grep -oFf list.txt <<< "$s"
  • -o只会输出匹配的子串
  • -F 会将 list.txt 中的行解释为固定字符串,而不是正则表达式
  • -f 将告诉 grep 使用哪个文件作为匹配模式的来源
  • <<< in bash 将后面的单词输入到前面的命令