linux awk命令详解
发布日期:2021-05-12 13:44:54 浏览次数:27 分类:精选文章

本文共 1967 字,大约阅读时间需要 6 分钟。

AWK命令实用指南

一、AWK的基本概念

AWK是一种强大的文本处理工具,广泛应用于数据处理和分析。相较于传统的屏幕处理工具,AWK在处理大文件时性能更优,且不会导致内存溢出或处理速度变慢。它的主要特点是“行处理器”,即依次处理每一行并输出结果。

二、AWK命令的结构

AWK命令的基本结构为:

awk [选项] '{命令} file'

其中,[选项]包括:

  • -F:指定分隔符,默认为空格。
  • -f:执行外部脚本。
  • -v:定义变量,格式为var=value

命令部分包含:

BEGIN {代码块}    {处理每一行}END {代码块}

BEGIN代码块用于初始化,设置全局变量或分隔符;END代码块用于处理每行处理后的最终计算或输出。

三、字段处理

AWK支持多种字段操作符:

  • $0:表示整行内容。
  • $n:表示第n个字段。
  • NF:表示当前行的字段数量。
  • NR:表示当前行的记录号,多文件时递增。
  • FNR:与NR类似,但每个文件的记录号从1开始。
  • \t:制表符。
  • \n:换行符。
  • FS:定义分隔符,默认为换行符。
  • RS:定义记录分隔符,默认为换行符。

四、条件判断

AWK支持if语句,条件比较应用括号包裹。if语句必须放在{}中,格式如下:

if(condition) {命令}

常用比较运算符包括:

  • ==:精确等于。
  • !=:精确不等于。
  • >:大于。
  • >=:大于等于。
  • <:小于。
  • <=:小于等于。

五、逻辑运算

AWK支持逻辑运算符&&||,用于多个条件的连接。

六、数值运算

AWK支持基本的算术运算,包括加、减、乘、除和取整。

七、输出处理

AWK默认输出字段之间使用空格分隔,OFS可指定输出字段分隔符,默认为空格。ORS指定输出记录分隔符,默认为换行符。

八、特殊用法

  • 过滤行数据

    awk 'NR==5 {print}' file

    输出第五行。

  • 批量处理

    awk '{print}' fileawk '{print $0}' file

    输出整行内容或第一字段。

  • 字段处理示例

    awk -F":" '{print $1}' fileawk -F:" " '{print $1}' file

    根据不同分隔符处理字段。

  • 格式化输出

    awk '{printf "%-8s %-8s %-10s\n",$1,$2,$3}' file

    格式化输出指定长度的字符串。

  • 高级应用

    awk 'BEGIN{A=0;B=0} {if($3>100) {A++; print "large"} else {B++; print "small"}} END{print A," ",B}' file

    统计字段值大于100的记录数。

  • 九、实际应用案例

  • 统计文件大小

    ls -l|awk 'BEGIN{sum=0} !/^d/{sum+=$5} END{print "total size is:",sum/1024,"KB"}'

    计算普通文件总大小(KB)。

  • 统计netstat状态

    netstat -anp|awk '$6~/LISTEN|CONNECTED/{sum[$6]++} END{for (i in sum) printf "%-10s %-6s %-3s \n",i," ",sum[i]}''

    统计LISTENCONNECTED状态的连接数量。

  • 成绩表统计

    awk 'BEGIN{math=0;eng=0;com=0;printf "Lineno. Name No. Math English Computer Total\n";printf "------------------------------------------------------------\n"}{math+=$3; eng+=$4; com+=$5;printf "%-8s %-7s %-7s %-7s %-9s %-10s %-7s \n",NR,$1,$2,$3,$4,$5,$3+$4+$5} END{printf "------------------------------------------------------------\n";printf "%-24s %-7s %-9s %-20s \n","Total:",math,eng,com;printf "%-24s %-7s %-9s %-20s \n","Avg:",math/NR,eng/NR,com/NR}' test0

    统计并输出学生成绩,计算平均分。

  • 十、总结

    AWK作为一款强大的文本处理工具,广泛应用于数据处理和分析。通过合理运用AWK命令,可以高效地完成文本数据的处理任务。无论是简单的过滤还是复杂的数据统计,AWK都能提供强大的支持。

    上一篇:USB摄像头驱动配置及V4L2编程
    下一篇:教育的本质到底是什么?

    发表评论

    最新留言

    很好
    [***.229.124.182]2025年04月22日 20时14分51秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章