2021年11月18号 awk高级用法(上)

简介: 2021年11月18号 awk高级用法(上)

awk高级用法

if

awk -F: '{if($3>=1000)print $1,$3}' /etc/passwd

查看密码文件第三列大于1000的虚拟用户,并且输出序列号和主机名

awk -F: '{if($NF=="/bin/bash") print $1}' /etc/passwd

查看最后有binbash的一行.并输出主机名称

awk '{if(NF>5) print $0}' /etc/fstab 

查看大于五行的挂载情况,并输出整行内容

awk -F: '{if($3>=1000){printf"common user:%s\n",$1}else{printf"root or sysuser:%s\n",$1}}' /etc/passwd

查看小于1000的输出系统或者root+主机名称,大于1000的输出虚拟+主机名称

awk -F: '{if($3>=1000) printf "common user: %s \n",$1; else printf "root or Sysuser :%s \n",$1}' /etc/passwd

查看小于1000的输出系统或者root+主机名称,大于1000的输出虚拟+主机名称(不用括号)

df -h|awk -F% '/^\/dev\/sd/{print $1}' |awk '$NF>=10{print $1,$5}'
df | awk -F"[[:space:]]+|%" '/^\/dev\/sd/{if($5>10)print $1,$5}'
awk "BEGIN{ test=100;if(test>90){print "very good"}else if(test>60){ print "good"}else{print "no pass"}}’

while

awk '/^[[:space:]]*linux16/{i=1;while(i<=NF) {if(length($i)>=10){print $i,length($i)};i++}}' /etc/grub2.cfg

查找首个为空行后边为linux16最后为其他字符的行,并且输出行后数据和对应的字符长度

do while:do做循环,while执行到特定目标停止

awk 'BEGIN{total=0;i=1;do{total+=i;i++}while(i<=100 );print total}'

从1+到100

For循环

awk 'BEGIN{total=0;for(i=1;i<=100;i++){total+=i};print total}'

1+100

awk '/^[[:space:]]*linux16/{for(i=0;i<=NF;i++){print $i,length($i)}}' /etc/grub2.cfg

查找首个为空行后边为linux16最后为其他字符的行,并且输出行后数据和对应的字符长度

其他写法

time(for((toule=0,i=1;i<=100000;i++))do let toule+=i;done;echo $toule)

break和continue

break结束整体循环

截止数

awk 'BEGIN{sum=0;for(i=1;i<=100;i++){if(i==50) break ; sum+=i}print sum}'

continue结束本次循环

取双数

awk 'BEGIN{sum==0;for(i=1;i<=100;i++){if(i%2==0) continue ; sum+=i}print sum}'

Next

结束本行的默认循环

取出第三列为偶数的数据并输出

awk -F: '{if($3%2!=0) next; print $1,$3}' /etc/passwd

数组

定义并打印输出

awk 'BEGIN{animal ["cat"] ="CAT";propel ["xiaoming"]="boy" ;print propel["xiaoming"]}'

数组

创建一个文件输入重复字符

去重复值或判断重读数量

awk '!line[$0]++' 123.txt
awk '{!line[$0]++;print $0,line[$0]}' 123.txt

数组分析

存在和不存在输出,存在输出1,不存在输出0

awk ' BEGIN{array["i"]="x"; array["j"]="y" ; print "i" in array, "y" in array}'

数组遍历

awk -F: ' {user[$1]=$3}END{for(i in user){print "username: "i, "uid: "user[i]}}' /etc/passwd
awk 'BEGIN { a["x"] = "wo" a["y"] = "ni" a["z"] = "ta" for(i in a){ print i,a[i] } }'

查看网络状态

ss -nta

查看进程统计

ss -nta >123.log
cat 123.log |sed -nr '1!s/^([^0-9]+) .*/\1/p'|sort |uniq -c
cat 123.log | awk 'NR!=1{abc[$1]++}END{for(i in abc){print i,abc[i]}}'
ss -ant | awk 'NR!=1{abc[$1]++}END{for(i in abc){print i,abc[i]}}'

网络进程

netstat -tan | awk '/^tcp/{abc[$NF]++}END{for(i in abc){print i,abc[i]}}'

查看ip

awk '{ip[$1]++}END{for(i in ip){print i,ip[i]}}' /etc/hostname

排序前十

sort -k2 -nr|head -10

二维数组

awk 'BEGIN {
 a[1][1] = 11
 a[1][2] = 12 
 a[1][3]=  13 
 a[2][1] = 21 
 a[2][2] = 22 
 a[2][3]=  23 
 for(i in a) 
 for(j in a[i]){ 
 print a[i][j] } }'


目录
相关文章
org.apache.ibatis.exceptions.PersistenceException: ### Error querying database.
org.apache.ibatis.exceptions.PersistenceException: ### Error querying database.
|
11月前
|
存储 SQL NoSQL
Doris数据仓库介绍
Doris数据仓库介绍
4119 14
|
11月前
|
Web App开发 人工智能 自然语言处理
WebChat:开源的网页内容增强问答 AI 助手,基于 Chrome 扩展的最佳实践开发,支持自定义 API 和本地大模型
WebChat 是一个基于 Chrome 扩展开发的 AI 助手,能够帮助用户理解和分析当前网页的内容,支持自定义 API 和本地大模型。
830 1
|
前端开发 JavaScript API
node事件循环中事件执行顺序
本文详细介绍了Node.js环境下的事件循环机制,包括其六个主要阶段:timers、I/O callbacks、idle, prepare、poll、check和close callbacks。文章通过具体代码示例解释了`setTimeout`、`setImmediate`和`process.nextTick`在事件循环中的执行顺序和区别。还探讨了在不同情况下(如I/O操作中)这些函数的执行顺序如何受到影响。最后,通过一个综合例子,展示了实际编码中事件循环的执行顺序。
197 1
node事件循环中事件执行顺序
|
存储 持续交付 API
GitLab CI/CD简介:构建持续集成与持续交付的全方位指南
GitLab CI/CD简介:构建持续集成与持续交付的全方位指南
550 0
GitLab CI/CD简介:构建持续集成与持续交付的全方位指南
|
监控 网络协议 Unix
深入探索Linux的lsof命令
在Linux系统中,了解哪些文件被哪些进程打开对于系统管理和问题诊断是极其重要的。这正是`lsof`命令,即List Open Files,发挥其强大功能的场景。本文旨在详细介绍`lsof`的起源、底层原理、参数意义,常见用法,并详解其返回结果的每个字段含义。此外,我们将讨论在使用`lsof`命令时需要注意的事项。
|
网络协议 网络虚拟化
|
网络协议 Linux 缓存
|
监控 安全 Linux