Linux系统awk命令的应用:查找文本文件中最长行
在日常运维工作中,我们经常需要分析日志、数据等文件内容,这些一般都是纯文本文件,在其中找出最长行或者是最短行内容是一个常见的需求。
今天我们使用awk工具来完成这个需求。
awk是Linux系统中内置的文本和数据处理的工具,支持按行扫描、模式匹配和内置函数,对应查找最长行这类问题能很好的处理,
1.查找最长行
awk 'length > max { max = length; line = $0 } END { print line }' filename 命令解析:
length返回当前行的字符数;
max记录最大行的字符数,默认值为0;
line记录最大行的内容;
逐行读取文件内容,当length的值大于max的值时,更新max的值并保存该行内容到line;
处理完所有行后,在END块中打印最终保存的line。
我们可以用它查看nginx日志中最长的行:
awk 'length > max { max = length; line = $0 } END { print line }' /var/log/nginx/access.log 
2.查找最短行
awk 'length < min || NR==1 { min = length; line = $0 } END { print line }' filename 命令解析:
length返回当前行的字符数;
min记录最小行的字符数,由于默认值为0,通过NR==1强制将第一行长度赋给min;
line记录最小行的内容;
逐行读取文件内容,当length<min时(或者当前为第一行时),更新min的值并保存该行内容到line;
处理完所有行后,在END块中打印最终保存的line。
我们可以用它来查看Nginx日志中的最短行:
awk 'length < min || NR==1 { min = length; line = $0 } END { print line }' /var/log/nginx/access.log 
这样就查出来结果啦,awk处理这类问题效率还是不错的。
正文到此结束
- 本文标签: Linux
- 本文链接: https://blog.eyyyye.com/article/153
- 版权声明: 本文由爱做梦的比特原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权
