我一直在尝试在我的服务器上使用以下命令
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哈希。
得到赞赏:)
答案 0 :(得分:3)
首先,模拟命令的功能
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 -