我想剪切数字和单位以仅将其保存为文件中的数字。
输入是:
Data byte rate: 24 bytes/s
Average packet size: 118.59 bytes
Data byte rate: 2 Kbytes/s
Average packet size: 10 Kbytes
预期输出是:
24
118.59
2000
10000
这就是我到目前为止所做的仅检索号码。
sed -r 's/.* ([0-9]+\.*[0-9]*).*?/\1/'
答案1
为了进行格式转换,您可以捕获并保留可选的乘数,然后将结果通过管道传输到numfmt
所以
$ sed -r 's/.* ([0-9]+\.?[0-9]*)[ \t]*([kKMGTP])?.*/\1\U\2/' input
24
118.59
2K
10K
这变成
$ sed -r 's/.* ([0-9]+\.?[0-9]*)[ \t]*([kKMGTP])?.*/\1\U\2/' input | numfmt --from si
24
118.59
2000
10000