Debian
正則表達式量詞不適用於定位
這個輸出是不言自明的:
XXXXX@debianvirtualbox:~$ locate -r "^/var/lib/tomcat[0-9]/.*" -l 10 /var/lib/tomcat8/conf /var/lib/tomcat8/lib /var/lib/tomcat8/logs /var/lib/tomcat8/webapps /var/lib/tomcat8/work /var/lib/tomcat8/webapps/ROOT /var/lib/tomcat8/webapps/websight /var/lib/tomcat8/webapps/ROOT/META-INF /var/lib/tomcat8/webapps/ROOT/index.html /var/lib/tomcat8/webapps/ROOT/META-INF/context.xml jakub@maredadebianvirtualbox:~$ locate -r "^/var/lib/tomcat[0-9]{1,2}/.*" -l 10 XXXXX@debianvirtualbox:~$
我正在嘗試列出
-l 10
與 tomcat 安裝目錄匹配的前十 () 個條目。如果我只是使用[0-9]
它正確匹配,但是如果我添加一個量詞它什麼都不匹配。量詞和也是如此,但似乎工作正常,這個表達式也是如此:tomcat**8**``[0-9]{1,2}``+``?``*
^/var/lib/tomcat[0-9][0-9]*/.*
為什麼會發生這種情況,什麼是好的解決方法?
嘗試
--regex
(不帶“p”)而不是-r
(又名--regexp
)。這告訴locate
使用擴展的正則表達式而不是基本的。locate --regex "^/var/lib/tomcat[0-9]{1,2}/" -l 10
或者,escape
{
和}
with\
使它們在基本正則表達式中特別。