假设我给了你以下的文字:
allow_httpd_anon_write --> off allow_httpd_mod_auth_ntlm_winbind --> off allow_httpd_mod_auth_pam --> off allow_httpd_sys_script_anon_write --> off httpd_builtin_scripting --> on httpd_can_check_spam --> off httpd_can_network_connect --> off httpd_can_network_connect_cobbler --> off httpd_can_network_connect_db --> off httpd_can_network_memcache --> off httpd_can_network_relay --> off httpd_can_sendmail --> off httpd_dbus_avahi --> on httpd_enable_cgi --> on httpd_enable_ftp_server --> off httpd_enable_homedirs --> on httpd_execmem --> off httpd_read_user_content --> off httpd_setrlimit --> off httpd_ssi_exec --> off httpd_tmp_exec --> off httpd_tty_comm --> on httpd_unified --> on httpd_use_cifs --> off httpd_use_gpg --> off httpd_use_nfs --> off
我想要做的是创build一个正则expression式,可以像这样parsing文本在同一行上查找两个或更多的单词。 例如,如果我正在寻找一个在同一行覆盖“ftp”和“home”的SELinux布尔值,我现在将执行以下操作:
getsebool -a | grep -i ftp | grep -i home
但是,我正在寻找一个正则expression式来做同样的事情。 具体来说,可以按照任意顺序查找所有单词…
也许类似
getsebool -a | egrep -i ".*(ftp.*home|home.*ftp).*"
会为你工作?
你也可以用awk来代替。 用awk你可以很容易地使用布尔结构。
getsebool -a | awk '/ftp/ && /home/ {print}' # case insensitive getsebool -a | awk 'tolower($0)~/ftp/ && tolower($0)~/home/ {print}'