【问题标题】:Extract substring bash [duplicate]提取子字符串bash [重复]
【发布时间】:2019-06-22 07:21:08
【问题描述】:

我有这个字符串:

4017de9511f7    workflow-engine-ms    0.12%     4.609MiB / 7.574GiB  0.06%         29MB / 15.8MB     4.1kB / 0B          13

我必须提取数字 4.609,如何在 bash 中提取? 谢谢!!

【问题讨论】:

  • 不是一个完全的骗子。参考问题和答案与进一步拆分所需字段无关。

标签: regex bash


【解决方案1】:

使用awksprintf 的简单方法是:

awk '{val=sprintf ("%g",$4); print val}' file
4.609

使用 "%g" 转换说明符,只需转换第 4 个字段的 4.609 部分,忽略 MiB 字符。

【讨论】:

    【解决方案2】:

    如果格式没有变化,可以使用sed -e 's# *# #g' | cut -d\ -f4 | cut -dM -f1提取值。

    sed 将后续空格合并为一个,第一个剪切提取 4.609MiB 字段,第二个剪切 MiB。

    【讨论】:

      【解决方案3】:

      如果你的意思是“我有这个字符串”,你有它在某个文件中,你需要获取 X.XXX Mib(或 GiB,或 kB)的第一个匹配项,我已经解决了这样的问题:

      echo "4017de9511f7    workflow-engine-ms    0.12%     4.609MiB / 7.574GiB  0.06%         29MB / 15.8MB     4.1kB / 0B          13" > test 
      

      准备测试文件,并且

      grep -Po "[0-9\.]+(?=(Mi|Gi|k))" test | head -1
      

      寻找匹配的字符串

      【讨论】:

        猜你喜欢
        • 2018-04-20
        • 1970-01-01
        • 2013-08-12
        • 1970-01-01
        • 2021-10-31
        • 2015-04-26
        相关资源
        最近更新 更多