我需要从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
来获取字符范围。您想要获得一些特定的列,因此perl
或awk
是执行此操作的好工具。
一个perl
示例,打印除第一列和第一行之外的所有列:
$ free -got | perl -anle 'print "@F[1..$#F]" unless $. == 1'
5 4 1 0 0 1
0 0 0
6 4 2