regex - 在一行中搜索多个字符串,中间有多个空格

标签 regex linux bash grep

我想从我的/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/

相关文章:

ruby net-ssh 登录 shell

c++ - 如何阻止重载的 new() 从 C++/Linux 中的 Ostream 调用?

bash - 合并一列时将 .csv 文件与 BASH 进行比较

Java 链接正则表达式

ruby - 正则表达式选择

r - 从R中的文件夹中的所有文件中提取两个单词之间的文本

regex - 谷歌电子表格: Conditional formating based on text in another sheet

linux - AWK 根据 B 列的唯一性计算 A 列的出现次数

c++ - 根据该实用程序的源代码创建类似 Linux "df"的实用程序

bash - 在 bash 中将多个逐字逐行输入到命令中