我一直在尝试在我的服务器上使用以下命令 dd if=/dev/zero bs=1M count=1024 | md5sum
输出:
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 2.92245 s, 367 MB/s
cd573cfaace07e7949bc0c46028904ff -
如何让它仅将速度(367 MB/s
)显示为输出?状态将打印到 stderr
。
我目前正在使用awk
但它显示了 md5 哈希。
感谢帮助:)
首先,一个模拟命令的函数
simulation() {
echo "1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 2.92245 s, 367 MB/s" >&2
echo "cd573cfaace07e7949bc0c46028904ff -"
}
$ simulation >/dev/null
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 2.92245 s, 367 MB/s
$ simulation 2>/dev/null
cd573cfaace07e7949bc0c46028904ff -
然后,解决方案:将 stderr 重定向到进程替换,该替换将所需的输出显示回 stderr,在变量中捕获 stdout。
$ md5sum=$( simulation 2> >(sed -n '/MB/s/ {s/.*, //p; q}' >&2) )
367 MB/s
$ echo $md5sum
cd573cfaace07e7949bc0c46028904ff -