【问题标题】:Catch specific string using regex使用正则表达式捕获特定字符串
【发布时间】:2023-01-17 23:07:45
【问题描述】:

我有多个板,在我的 bash 脚本中,我想使用正则表达式捕获我的根文件系统名称。当我做 cat /proc/cmdline 时,我有这个:

BOOT_IMAGE=/vmlinuz-5.15.0-57-generic root=/dev/mapper/vgubuntu-root ro quiet splash vt.handoff=7

我只想选择/dev/mapper/vgubuntu-root

到目前为止,我设法使用此命令捕获了root=/dev/mapper/vgubuntu-root

\broot=[^ ]+

【问题讨论】:

    标签: regex linux bash


    【解决方案1】:

    您可以将 sed 中的正则表达式与捕获组一起使用:

    sed -E 's~.* root=([^ ]+).*~~' /proc/cmdline
    
    /dev/mapper/vgubuntu-root
    

    【讨论】:

      【解决方案2】:

      由于您使用的是 Linux,因此可以使用 GNU grep:

      grep -oP 'root=KS+'
      

      其中 o 允许匹配输出,P 将正则表达式引擎设置为 PCRE。请参阅online demo细节:

      • - 单词边界
      • root= - 固定字符串
      • K - 匹配重置运算符丢弃到目前为止匹配的文本
      • S+ - 一个或多个非空白字符。

      【讨论】:

        猜你喜欢
        • 2022-01-17
        • 2023-01-10
        • 1970-01-01
        • 2023-01-05
        • 2023-03-04
        • 2012-08-20
        • 1970-01-01
        • 1970-01-01
        • 2016-12-15
        相关资源
        最近更新 更多