我想从我的/etc/pam.d/su 文件中搜索下面的整行以在脚本中使用它:
auth required pam_wheel.so use_uid
中间可能有多个空格,也可能被注释掉,有多个#'s
这是我正在使用的:
grep "^#*auth +required +pam_wheel\.so +use_uid$"
,但它不会产生任何结果
我当然做错了什么,但我做错了什么?不好意思,一直对正则表达式不好
最佳答案
egrep是要走的路,但问题是“多个”空间。可以这样做
egrep "^([[:space:]]*#)*[[:space:]]*auth[[:space:]]+required[[:space:]]+pam_wheel\.so[[:space:]]+use_uid[[:space:]]*$"
regex(7) 中的特殊转义符中未列出反斜杠空格“\”相反,可以使用 POSIX 字符类。您也可以使用 blank(GNU 扩展)而不是 space 来使它成为唯一的空格/制表符。
关于regex - 在一行中搜索多个字符串,中间有多个空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28692348/