linux 查看系统空间使用率 df -h按指定的格式输出( 去除首行标题行,每行文件系统信息用指定分隔符分隔,并去除指定字符 )

由于需要对系统空间使用率进行网页页面的可视化输出,需要将“df -h”获取到的系统空间使用率的信息按照可视化界面的要求的格式进行修改,才可以正常解析数据,正常展示在界面上。

可视化界面要求shell输出内容格式为:

文件系统|大小|已使用|可用|使用率|挂载盘|日期

(其中使用率字段要求数据类型为int)

 

首先使用linux系统命令行输入df -h 命令,执行结果:

 

根据df -h的输出可以看出,除最后一项“日期”外,前几项均与指定格式内容一致,那么接下来还需要处理以下问题:

1.将首行的标题行去除,不要其显示输出

2.去掉“使用率”字段中带有的“%”符号

3.每行文件系统的具体信息每一项内容需要用"|"分隔符分隔输出

4.每行最后再添加输出当天日期

 

 

操作过程(均使用管道命令):

1.去除首行

sed '1d'

  

 

 2.去除“%”号

sed 's/%//g'

  

 

 3.指定“|”分隔符输出

awk '{printf $1"|"$2"|"$3"|"$4"|"$5"|"$6"
"}'

 $1  $2  指的是awk前要输出的内容分割后的每一列的字段内容。其中默认分隔符为空格,因为此处就是空格,所以省略了。

 

 

当分隔符不是空格时,如这段内容( 此时分隔符为冒号:)

使用FS命令:

FS内置变量的作用是在awk命令中指定分隔符,一般和BEGIN命令一起使用。

  此时先按照“:”作为分隔符分隔每行的内容,然后再以“,”作为新的分隔符输出:

cat /etc/passwd |grep "bash"|awk 'BEGIN{FS=":"} {print $1 "," $2}'

  

 

 注意此处的FS前加了BEGIN,如果不加BEGIN的话,由于awk命令会首先读取第一行命令,导致输出的时候会把第一行全部输出,而从第二行开始才会使用“:”分隔符来分割列输出。

 

 

4. 每行添加当天日期

#获取当天日期
localdates=`date +%Y%m%d`

  

 

 

此处需要用到awk命令获取外部变量:

echo | awk '{print localdates}' localdates=$localdates

  

 

 

 

完整命令:

df -h |sed '1d'|sed 's/%//g'|awk '{printf $1"|"$2"|"$3"|"$4"|"$5"|"$6"|"localdates"
"}' localdates=$localdates

  

 

 

 

 

参考:https://www.cnblogs.com/anchun7080/p/10316904.html

https://blog.csdn.net/szz0429/article/details/83981734

原文地址:https://www.cnblogs.com/wang-jx/p/14312336.html