我有一个大约 10KB 的文本文件 foobar.txt,没有那么长。然而,在高性能 Linux 机器上,以下匹配搜索命令大约需要 10 秒。
bash>shopt -s extglob
bash>[[ `cat foobar.txt` == ?(*[[:print:]])foobar ]]
不匹配:foobar.txt 中的所有字符都是可打印的,但没有字符串“foobar”。
搜索应该尝试匹配两个备选方案,每个备选方案都不匹配:
"foobar"
那是瞬间的
*[[:print:]]foobar
- 应该是这样的:
应该一次一个字符地扫描文件,每次,检查下一个字符是否
[[:print:]]foobar
这也应该很快,每个字符都不应该花费一毫秒。
事实上,如果我放弃?,也就是做
bash>[[ `cat foobar.txt` == *[[:print:]]foobar ]]
这是瞬间的。但这只是上面的第二种选择,没有第一种。
那为什么这么长??