grep 加正则表达式的格式输出 bash shell

Format output of grep plus regex bash shell

我有这种情况。

在我的脚本中,我必须在特定分区上使用 hdparm 命令并提取计算出的 MB/s 值。

感谢 grep 和 regex 的使用,我能够做到这一点;所以,如果有

sudo hdparm -tT /dev/xvda1

输出是:

/dev/xvda1:
 Timing cached reads:   12596 MB in  1.99 seconds = 6320.55 MB/sec
 Timing buffered disk reads: 594 MB in  3.01 seconds = 197.12 MB/sec

sudo hdparm -tT /dev/xvda1 | grep -Po '.* \K[0-9.]+'

结果是:

6320.55
197.12

现在,下一个请求是以不同的方式打印数据。 期望的输出是:

/dev/xvda1: 6320.55 MB/sec, 197.12 MB/sec

但我不知道如何获得这个;总而言之,所要求的是打印分区,并在一行中打印提取的 MB/s 值。

看起来像你的 was an XY problem。 如果你想附加 MB/sec 无论如何都没有必要首先删除它。提取 6320.55 MB/sec 比仅提取 6320.55.

要容易得多

无论如何,awk 脚本可能是最好的解决方案:

awk -F' = ' '{a[NR]=$NF} END {printf "%s %s, %s\n", a[1], a[2], a[3]}'

如果您不需要那种格式,脚本可以简化为:

awk -F' = ' '{printf "%s ", $NF}'

打印 /dev/xvda1: 6320.55 MB/sec 197.12 MB/sec .