【问题标题】:Using Grep + Regex linux使用 grep + 正则表达式 linux
【发布时间】:2020-09-22 04:28:10
【问题描述】:

我试图在 /etc/login.defs 文件中找到等于或小于 90 的值“PASS_MAX_DAYS”但它不起作用,我在 suse 12 服务器上测试但命令不起作用。

grep "^PASS_MAX_DAYS\s*([0-9]|[1-8][0-9]|90)" /etc/login.defs

感谢您的支持和时间

【问题讨论】:

  • 我建议使用awk 完成这项工作。
  • grep 用于查找文本模式。您要做的是找到数值。
  • @omar180791 :您尝试用\s 表示“空格或制表符”。 AFIK,如果你想使用这个符号,你需要使用 -P 选项,而且你没有在你的问题中包含一些你尝试匹配的行的示例(或描述)。

标签: regex linux grep


【解决方案1】:

最好根据您的值测试数字,而不是根据任何模式测试字符串(如 cmets 中已建议的那样)。比如这样:

awk '/^PASS_MAX_DAYS/ && $2<=90' /etc/login.defs

这样,如果您的限制更改为 30365 天,您可以轻松修改命令。另外我猜像090 这样的值对于该配置仍然有效。

【讨论】:

    【解决方案2】:

    grep,默认不理解扩展正则表达式..

    grep -E "^PASS_MAX_DAYS\s*([0-9]|[1-8][0-9]|90)\s*$" /etc/login.defs
    

    会给你一些结果。

    也就是说,您希望该文件中有多少 PASS_MAX_DAYS 的不同条目?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-30
      • 1970-01-01
      • 1970-01-01
      • 2014-08-31
      • 1970-01-01
      • 2023-03-04
      相关资源
      最近更新 更多