我正在使用grep在单个文件中搜索几个正则表达式.特别是,我正在考虑一个带有英文字幕的100 MB文件, 并运行存储在文件patterns.txt中的以下正则表达式:
Cas.*eharden
acr.*otic
syn.*thesizing
sub.*abbot
iss.*acharite
bot.*onne
dis.*similatory
ove.*rmantel
isa.*tin
ado.*nijah
sol.*ution
zei.*st
fam.*ousness
inq.*uisitress
aor.*tography
via.*duct
ama.*sa
der.*ive
pie.*tas
kit.*chenette
Run Code Online (Sandbox Code Playgroud)
在这样做时,我观察到grep所需的时间不会与正则表达式的数量呈线性增长.实际上,它似乎呈指数级增长.
系统: Intel(R)Core(TM)i5-5200U CPU @ 2.20GHz; 4个核心; 8 GB RAM
命令grep -c -f patterns.txt subtitles.txt计数2214次并且需要
2,19s用户0,00s系统99%cpu 2,192总计.
如果我将以下表达式添加到patterns.txt
ort.*hros
ove.*ridentify
mis.*tiest
pay.*ne
int.*erchasing
jej.*uneness
sta.*lactiform
und.*ertrain
cob.*bles
Sub.*category
Run Code Online (Sandbox Code Playgroud)
命令grep -c -f patterns.txt subtitles.txt计数2894次并占用71,35s用户0,06s系统99%cpu 1:11,42总计.
再添加五个表达式:
dis.*embosom
imp.*ortunateness
ema.*thion
rho.*mb
haz.*elwood
Run Code Online (Sandbox Code Playgroud)
命令 …