写点什么

linux 之 awk 使用技巧

作者:入门小站
  • 2022 年 5 月 20 日
  • 本文字数:751 字

    阅读完需:约 2 分钟

打印文件的第一列

> awk '{print $1}' rumenz.txt
复制代码

打印文件的前两列

> awk '{print $1,$2}' rumenz.txt
复制代码

打印文件的最后一列

> awk '{print $NF}' rumenz.txt
复制代码

打印文件的总行数

> awk 'END{print NR}' rumenz.txt
复制代码

打印文件的第一行

> awk 'NR==1{print}' rumenz.txt
复制代码


  • NR 是指 awk 正在处理的记录位于文件中的位置(行号)

打印文件的第 3 行第 2 列

> sed -n '3,1p' rumenz.txt | awk '{print $2}'
复制代码

删除空行

> awk 'NF' rumenz.txt
复制代码

打印奇数行

> awk 'b=!b' rumenz.txt
复制代码

打印文件按#分割后,行长度为 3 的所有行

> awk -F '#' 'if(NF==3){print}' rumenz.txt
复制代码


  • NF 是指 awk 正在处理的记录包含几个域(字段),这与域分隔符有关,默认为空

统计 Linux 系统中每个用户所用的 shell

> cat /etc/passwd | awk -F ":" '{print $1" : "$7}'
复制代码

用 awk 统计 linux 系统中所有的用户数

> cat /etc/passwd | awk '{count++}END{ print count}'
复制代码

统计某个文件夹下文件所占的字节数

> ls -l | awk 'BEGIN{size=0}{size=size+$5}END{print size}'
复制代码

统计某个文件夹下文件所占的字节数,按 M 显示

> ls -l | awk 'BEGIN{size=0}{size=size+$5}END{print size}'
复制代码

netstat 结合 awk 统计 TCP 连接数

> netstat -tunlp | awk '/^tcp/{++a[$6]}END{for(i in a) print i,a[i]}'
复制代码

过滤空行

> awk '/^[^$]/ {print $0}' rumenz.txt
复制代码

列运算

> cat 1.txt123
复制代码

求和

> cat 1.txt | awk '{a+=$1}END{print a}'
复制代码

求平均值

> cat 1.txt | awk '{a+=$1}END{print a/NR}'
复制代码

求列的最大值

> cat 1.txt | awk 'BEGIN{a=0}{if($1>a) a=$1 fi}END{print a}'
复制代码


原文链接:https://rumenz.com/rumenbiji/linux-awk-skills.html微信公众号:入门小站


  • 回复【1001】获取 linux 常用命令速查手册

  • 回复【10010】获取 阿里云 ECS 运维 Linux 系统诊断

  • 回复【10012】获取 Linux 学习笔记【强悍总结值得一看】

  • 回复【10013】获取 shell 简明教程



发布于: 刚刚阅读数: 2
用户头像

入门小站

关注

还未添加个人签名 2020.01.18 加入

还未添加个人简介

评论

发布
暂无评论
linux之awk使用技巧_入门小站_InfoQ写作社区