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
.
我有这种情况。
在我的脚本中,我必须在特定分区上使用 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 值。
看起来像你的 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
.