【问题标题】:How to extract drbd status using grep/regex/cut/awk/sed etc如何使用 grep/regex/cut/awk/sed 等提取 drbd 状态
【发布时间】:2015-05-05 12:44:51
【问题描述】:

从 /proc/drbd 的输出中,我尝试为每个设备(0 和 1)提取此输出的“UpToDate/UpToDate”部分。我试过了:

cat /proc/drbd  | grep ' 0:' | grep -Eo 'ds:(.*)'

但这给了我:

ds:UpToDate/UpToDate C r-----

这不是我要寻找的(寻找 UpToDate/UpToDate 传播的插槽)或基本上是“UpToDate/UpToDate”的返回。无论如何,这是 /proc/drbd 的输出:

  0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
  1: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-----

【问题讨论】:

    标签: regex bash awk sed drbd


    【解决方案1】:

    您可以使用以下命令查询DRBD设备的状态:

    # drbdadm role <resource>
    # drbdadm cstate <resource>
    # drbdadm dstate <resource>
    

    【讨论】:

      【解决方案2】:

      您可以使用以下grep 命令:

      grep -o 'ds[^[:space:]]\+' /proc/drbd
      

      如果你不希望前面有ds:,你可以在perl 模式下使用grep(如果你有GNU grep):

      grep -oP 'ds:\K[^\s]+' /proc/drbd
      

      \K 清除之前匹配的所有内容 - 在本例中为 ds:

      如果你没有 GNU grep,你可以使用awk

      awk -F'[: ]' '{print $8}' /proc/drbd
      

      sed:

      sed 's/.*ds:\([^[:space:]]\+\).*/\1/' /proc/drbd
      

      【讨论】:

      • 谢谢,这正是我所需要的
      • 不客气!如果您关心可移植性,请从最后两个命令中选择一个
      【解决方案3】:

      使用下面的正则表达式:

      grep -o 'ds:([^ ]*)'
      

      【讨论】:

        猜你喜欢
        • 2013-03-01
        • 1970-01-01
        • 2020-08-24
        • 2020-06-19
        • 2015-03-11
        • 2012-08-02
        • 2019-10-20
        • 2021-11-03
        • 1970-01-01
        相关资源
        最近更新 更多