我一定要让所有人都知道awk这个实用操作

对不起!!!忍不住标题党了。
但是这个命令在我日常工作中使用频率真的太高了,我一定要分享出来。
对awk用得比较多的大佬嘛可以绕路了,这篇主要是给不了解awk的孩子们一个关于统计文件大小的实用小tips。

1.查看普通文件大小

首先,在Linux系统下,需要查看普通文件大小的时候我们一般会怎么做?
是不是用ll命令显示所在目录下的文件信息,第五列就是对应文件的大小(用字节表示)。见下图:
我一定要让所有人都知道awk这个实用操作
或者用ll -h命令以和文件字节大小相近的单位显示:
我一定要让所有人都知道awk这个实用操作
如果希望统一单位也可以使用--block-size参数:
我一定要让所有人都知道awk这个实用操作

2.查看目录文件大小

但是,使用ll命令是没有办法直接看到目录文件的大小的。如果需要查看目录大小,需要用du
我一定要让所有人都知道awk这个实用操作

3.使用awk命令统计指定文件的大小

现在如果我们要统计多个文件的大小怎么办,这多个文件不一定是某个目录下所有的文件,可能只是其中一部分的。我们需要把各个文件的大小找出来,然后进行累加得到最后的统计结果。这个时候,awk就非常好使了。先看怎么用,再解释具体的用法规则。
例如,统计当前路径下20200811这天的所有文件(文件名包含日期)大小之和,数据单位用T表示。

ll | grep 20200811 | awk '{sum+=$5}END{print sum/(1024^4)}'

首先通过grep命令筛选出符合条件的文件,然后使用累加操作,将第五列的值(也就是文件大小,单位为Byte)累加存入变量sum,最后将单位进行转换,打印最后的数值。
下面我贴了一些awk的使用说明,了解这些以后基本的操作应该是能看懂了。

3.1 awk动作

awk的常用动作是格式化输出printprintf, print 会在每次输出后自动换行,而如果使用 printf 动作,就必须在最后加入"\n"。
awk会根据空格和制表符,将每一行分成若干字段,依次用$1$2$3代表第一个字段、第二个字段、第三个字段等等。另外,$0代表当前行。

3.2 awk条件

awk允许指定输出条件,只输出符合条件的行。输出条件要写在动作的前面。

条件类型 条 件 说 明
awk保留字 BEGIN 在 awk 程序一开始,尚未读取任何数据之前执行。BEGIN 后的动作只在程序开始时执行一次
awk保留字 END 在 awk 程序处理完所有数据,即将结束时执行?END 后的动作只在程序结束时执行一次
关系运算符 >、<、>=、<=、==、!=
A~B 判断字符串 A 中是否包含能匹配 B 表达式的子字符串
A!~B 判断字符串 A 中是否不包含能匹配 B 表达式的子字符串
正则表达式 /正则/ 在“//”中可以写入字符,则支持正则表达式
上一篇:弦长公式


下一篇:文本处理awk 内核管理、加密安全