如何格式化 free/sar/such 命令的输出?

如何格式化 free/sar/such 命令的输出?

我需要从free命令的输出中获取一些特定的列。

我遵循的方法似乎不太好,有人可以建议我更好的方法吗?

bash-3.2$ free -gotsi
             total       used       free     shared    buffers     cached
Mem:            56         29         27          0          0         29
Swap:           11          0         11
Total:          67         29         38
bash-3.2$

bash-3.2$ free -gotsi | cut -c-40,64-
             total       used       free    cached
Mem:            56         29         27        29
Swap:           11          0         11
Total:          67         29         38

答案1

我假设您想要一种更好的方法来做到这一点,基于列而不是字符,如果是这样:

free | #the option for free don't work for me
sed -re 's/[ ]+/\t/g' | #convert delimiter to single tab
cut -f1-4,7 # choose columns 1 2 3 4 7

答案2

在这种情况下,您不应该使用cut来获取字符范围。您想要获得一些特定的列,因此perlawk是执行此操作的好工具。

一个perl示例,打印除第一列和第一行之外的所有列:

$ free -got | perl -anle 'print "@F[1..$#F]" unless $. == 1'
5 4 1 0 0 1
0 0 0
6 4 2

相关内容