如何使用 awk 命令

大家好,
我是系统解决方案部的冈崎。
这次,我将为大家介绍awk命令,该命令也用于检查日志。

awk 命令是什么?

在处理以空格或特定字符分隔的多行数据时
计算总值

awk '{print$[要输出的列数];}'

例如,有一个类似这样的文件:

test.txt 1 2 3 5 1 2 3 6 1 2 3 7 1 2 3 8

如果只想显示第一列,可以按如下方式操作:

cat test.txt | awk '{print$1;}' 1 1 1 1

如何使用

要使用任意字符作为分隔符:

awk -F [分隔符] '{print$1;}'
  • 使用示例
  • 仅显示第二列

    sed -e 's/ /:/g' test.txt | awk -F ':' '{print$2;}' 2 2 2 2
    

    输出行号:

    awk '{print NR $1;}'
    
  • 使用示例
  • 仅显示第三列

    sed -e 's/ /:/g' test.txt | awk -F ':' '{print NR $3;}' 13 23 33 43
    

    但是,这很难理解,所以请这样解释:

    sed -e 's/ /:/g' test.txt | awk -F ':' '{print NR " " $3;}' 1 3 2 3 3 3 4 3
    

    输出特定列包含特定字符串的行:

    awk '$1==[任意字符]'
    
  • 使用示例
  • 第四行只显示数字 5。

    sed -e 's/ /:/g' test.txt | awk -F ':' '$4=="5" {print NR " " $4;}' 1 5
    

    相反的情况

    sed -e 's/ /:/g' test.txt | awk -F ':' '$4!="5" {print NR " " $4;}' 2 6 3 7 4 8
    

    对特定列中的数字求和:

    awk '{sum+=$1;}END{print sum;}'
    
  • 使用示例
  • 在第一行显示总数

    sed -e 's/ /:/g' test.txt | awk -F ':' '{sum+=$1;}END{print sum;}' 4
    

    就平均值而言

    sed -e 's/ /:/g' test.txt | awk -F ':' '{sum+=$1;}END{print sum/NR;}' 1
    

    概括

    在操作过程中,您可能需要频繁打开日志文件,但
    在打开文件之前对其进行格式化,可以使其更易于阅读,并使
    您能够更高效地汇总错误和访问信息。
    将此 awk 命令与其他命令结合使用,将有助于提高日常操作效率。

    如果您觉得这篇文章有用,请点击【点赞】!
    1
    加载中...
    1票,平均分:1.00/11
    1,075
    X Facebook Hatena书签 口袋

这篇文章的作者

关于作者

冈崎润一郎

在智能手机游戏的迁移和运营方面拥有丰富的经验。

我目前从事多云运维、服务器搭建和迁移方面的工作。随着项目数量的增加,我一直在思考如何提高工作效率。我经常会考虑各种服务器迁移方案,并权衡不同云平台的优势。

在进行云间迁移和物理环境到云环境迁移的过程中,该公司连续两次在日本MSP协会举办的比赛中获得冠军。