个人博客,记录知识防止遗忘
awk使用实例:split分隔函数与数组
awk使用实例:split分隔函数与数组

awk使用实例:split分隔函数与数组

内容大纲

1    情景说明:

某目录下存在大量以日期结尾的文件(如下图所示), 现在有以下几个需求image.png

需求一: 统计出 2021-01-10 这一天所有的日志总大小
需求二: 分天统计出单日日志总大小

2    处理过程

2.1    需求一解决:

ll ./*.2021-01-10 | awk 'BEGIN{sum=0}{sum+=$5}END{print sum/1024/1024/1024"G"}'

image.png

2.2    需求二解决:

for t in  ls |grep '.txt.' |awk -F '.txt.' '{print $2}'|sort -u ;do  \
  ls -l *.$t  2>/dev/null  \
   | awk 'BEGIN{sum=0}{sum+=$5;split($NF,aaa,".txt.")}END{if (sum >0){print (sum/1024/1024/1024)"G",aaa[2]}}' ;done

上述命令也可以拆解为以下形式, 方便理解 (可以正常运行)

for t in  ls |grep '.txt.' |awk -F '.txt.' '{print $2}'|sort -u   
do  
    ls -l *.$t  2>/dev/null  | awk '
        BEGIN{
                sum=0
             }
        { 
            sum+=$5
            split($NF,aaa,".txt.")
        }
        END{
                if (sum >0)
                print (sum/1024/1024/1024)"G",aaa[2]
            }'
done;

image.png

附注: awk 中 split 函数的用法举例

split($NF;aaa;".txt.")    将最后一个字段以 ".txt." 分割, 并将各个段记录到数组aaa中

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注