Linux之awk命令

摘要:
Awk是一种可以处理数据并生成格式化报告的语言;Awk认为文件中的每一行都是一条记录,记录一般用换行符分隔;awk认为文件中的每一列都是一个字段,字段通常用空格或ab分隔;FS指定输入字段分隔符;OFFS指定输出字段分隔符;RS指定输入行分隔符ORS指定输出行分隔符1。awk打印硬盘设备的名称。默认情况下,空格用于分隔df-h|awk“{print$1}”2。awk用于按空格、冒号和分号分隔awk
  • awk是一种可以处理数据,产生格式化报表看的语言;
  • awk认为文件中的每一行是一条记录,记录与记录一般用换行符分割;
  • awk认为文件中的每一列是一个字段,字段与字段一般用空格或 ab分割;

FS 指定输入字段分隔符;
OFFS 指定输出字段分隔符;

RS 指定输入行分隔符
ORS 指定输出行分隔符

1.awk 打印硬盘设备名称,默认以空格为分割
df -h|awk '{print $1}'
2.awk 以空格,冒号, ,分号为分割
awk -F '[ :	;]' '{print $1}' /data/old.txt
3.awk 以冒号为分割,打印第一列,同时将内容追加到/tmp/awk.log 文件中
awk -F: '{print $1>>"/tmp/awk.log"}' /data/dks.txt
4.打印/data/old.txt 文件中第 3 行至第 5 行,NR 表示打印行,$0 表示文本所有域
awk 'NR==3,NR==5{print}' /data/old.txt
awk 'NR==3,NR==5{print $0}' /data/old.txt
5.打印/data/old.txt 文件中第 3 行至第 5 行的第一列与最后一列
awk 'NR==3,NR==5{print $1,$NF}' /data/old.txt
6.打印/data/old.txt 文件中,长度大于 80 的行号
awk 'length($0)>80 {print NR}' /data/old.txt
7.AWK 引用 Shell 变量,使用-v 或者双引号+单引号即可
awk -v name=zhangsan '{print name,$NF}' /data/old.txt
name=zhangsan;echo |awk '{print "'${name}'";}'
8.awk 以冒号切割,打印第一列同时只显示前 5 行
awk -F: 'NR>=1&&NR<=5 {print $1}' /etc/passwd
9.awk 指定文件 awk.sum 第一列的总和
awk '{sum+=$1} END{print sum}' awk.sum
10.awk NR 行号除以 2 余数为 0 则跳过该行,继续执行下一行,打印在频幕上
awk -F: 'NR%2==0 {next} {print NR,$1}' /etc/passwd
11.awk 添加自定义字符 ip_ ,并打印出 ip 地址
ifconfig eth0 |grep "inet "|awk '{print "ip_"$2} '
12.awk 与 if 组合,判断数字比较
echo 3 2 1| awk '{if(($1>$2)||($1>$3)){print $2}else{print $1}}'
13.awk 与数组组合,统计 passwd 文件用户数
awk -F: 'BEGIN{count=0;} {name[count]=$1;count++;};END{for(i=0;i<NR;i++)print i,name[i]}' /etc/passwd
14.awk 分析 Nginx 访问日志的状态码 404、502 等错误信息页面,统计次数大于 20 的 IP 地址
awk '{if ($9~/502|499|500|503|404/) print $1,$9}' access.log|sort|uniq –c|sort –nr | awk '{if($1>20) print $2}'
15.awk 统计服务器状态连接数
netstat -an |awk '/tcp/ {s[$NF]++} END{for(a in s) {print a,s[a]}}'
netstat -an |awk '/tcp/ {print $NF}' | sort | uniq -c
16.打印文本最后一行
awk -n '$=' file.txt
17.打印行数
awk 'END{print NR}' file.txt
18.打印列数
awk 'END{print NF}' file.txt 
19.awk流程控制
awk '{if($1>5) print $0}' file.txt

#实现$1+$2+$3
awk '{sum=0;for(i=1;i<4;i++){sum+=$i}print sum}' file.txt

awk '{sum=0;i=1;while(sum<150){sum+=$i;i++}print sum}' file.txt

免责声明:文章转载自《Linux之awk命令》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇kafka服务端和客户端均无法消费【MyBatis】 MyBatis入门下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

CSS-顶部滚动进度条

Documentbody{background-image:linear-gradient(torighttop,#f0050%,#ece50%);background-repeat:no-repeat;height:300vh;position:relative;background-size:100%calc(100%-100vh+5px);}body:...

AirtestIDE基本功能(二)

文件菜单-相应工具栏上的前四个按钮:新建、打开、保存和另存为新。单击此按钮以选择是否使用创建脚本。air后缀或带有的脚本。py后缀。新脚本将初始化代码,以帮助您从API引入Airtest的各种接口,并自动初始化设备。你可以看到。air脚本文件实际上是一个公用文件夹,其中放置了通过IDE捕获的图像和运行日志。软件关闭时,布局信息将自动保存。(3) 选项-设置设...

docker.service启动失败:Unit not found的原因及解决办法

解决方案是删除/usr/lib/systemd/system/docker.service的[UNIT]中包含的dockersocket,然后重新加载systemctldaemon,最后是systemctlstartdocker.service。启动成功。在类似的情况下,docker.socket缺失,但新版本需要docker.seocket。这是因为Fla...

微信分享之分享图片/分享图标不能显示

微信分享的分享图标/图片无法显示,主要是由于以下几个问题:1.确保分享界面调用成功,分享路径正确。2.确保共享图片的路径不使用中文或全半角字符。3.确保副本不包含敏感字符,如红包和收据。当共享接口未能成功加载时,将发生错误。在页面的前面使用隐藏的div来放置要制作缩略图的图片。记住,不能直接隐藏图片。style=“display:noen”,如果没有,则使用...

差分方程的零输入响应与零状态响应

差分方程的迭代分析方法有以下缺点:没有闭合解,不利于数学分析。某个时间的输出只能从头开始计算。本文介绍了差分方程的零输入响应和零状态响应分析方法。对于系统,这种分析方法可以很好地表达系统响应的物理意义=Y[-1]=0$Input Y[n]。回顾零输入响应和零状态响应的迭代计算,我们发现以下规则:$egin{align*}y[0]&=-&qqu...

【Mybatis-Plus】使用updateById()、update()将字段更新为null或者空

我检查了以下项目的配置,发现字段级别设置为NOT_由空引起。2不为空,但默认更新策略为Not_ NULL:解决方案1。设置全局字段策略加:classpath:#字段策略IGNORED:NOT_NULL:NOT_EMPTY:NOT_Null2。为所需字段设置单独的字段策略很麻烦。...