美文网首页
awk命令详细用法

awk命令详细用法

作者: 江月照我眠 | 来源:发表于2023-03-13 10:27 被阅读0次

一、awk命令快速入门

awk 'BEGIN {commands} pattern {commands}END{commands}' file1

BEGIN: 处理数据前执行的命令
END:处理数据后执行的命令
pattern:模式,每一行都执行的命令

BEGIN和END里的命令只是执行一次
pattern里的命令会匹配每一行去处理

示例:查找/etc/passwd文件,筛选第3列值在500-2000之间的行,输出第1列和第3列的值,

[root@CentOS-7 /]# cat /etc/passwd | awk -F ":" 'BEGIN{OFS="@@";print "---start---"} $3>500&&$3<2000 {print $1,$3}END{print "---end---"}'
---start---
polkitd@@999
libstoragemgmt@@998
unbound@@997
saslauth@@996
gluster@@995
chrony@@994
www@@1000
mysql@@1001
redis@@1002
gitlab-www@@993
git@@992
gitlab-redis@@991
gitlab-psql@@990
gitlab-prometheus@@989
springboot@@1003
pdns@@988
named@@1004
user-es@@1005
openvpn@@987
---end---

上述例子中,我们用-F ":" 指定每行文本中的分隔符为":",同时用OFS="@@"指定输出分隔符为@@,如果去掉OFS="@@"则默认用空格做分隔符,如果把1和3之间的逗号去掉,则没有分隔符
分隔符示例

[root@CentOS-7 /]# awk -F ":" '{print $1,$2,$5}' /etc/passwd | head -5
root x root
bin x bin
daemon x daemon
adm x adm
lp x lp
[root@CentOS-7 /]# awk -F ":" '{print $1$2$5}' /etc/passwd | head -5
rootxroot
binxbin
daemonxdaemon
admxadm
lpxlp

二、awk工作流程

先执行一次BEGIN {commands}代码块,然后查看是否使用pattern模式若有则检查该行整体是否匹配pattern,匹配则执行{commands}命令,不匹配则不执行{commands}命令,若无则直接执行{commands}命令主体,执行完毕接着读取下一行,循环读取直到读取完毕。
pattern模式示例

[root@CentOS-7 /]# awk -F ":" '/gitlab/{print $1,$2,$5}' /etc/passwd | head -5
gitlab-www x 
git x 
gitlab-redis x 
gitlab-psql x 
gitlab-prometheus x 

三、配合其他命令使用

示例1:查找python server.py命令的进程pid

[root@CentOS-7 /]# ps -ef | grep 'python server.py' |grep -v 'grep' |awk '{print $2}'
21477
21592
21593
21594
21595

示例2:查找以python3执行的进程pid

[root@CentOS-7 /]# ps aux | grep python3.7 | grep -v 'grep' | awk '{print $2}'
21477
21592
21593
21594
21595

示例3:统计uid>1000并且使用shell是bash的用户的数量

[root@CentOS-7 /]# awk -F ":" '$3>1000&&$7 ~ /bash/{print $1,$3,$7; i++}END{print "uid大于1000并且shell是bash的人数有:"i"人"}' /etc/passwd
user-es 1005 /bin/bash
uid大于1000并且shell是bash的人数有:1人

ps: ~代表进行正则匹配,匹配则为1,不匹配则为0

示例4:显示第5行到第10行/etc/passed文件里的第3和第5字段的内容

[root@CentOS-7 /]# awk -F ":" 'NR>=5 && NR<=10{print NR,$3,$5}' /etc/passwd
5 4 lp
6 5 sync
7 6 shutdown
8 7 halt
9 8 mail
10 11 operator

ps:NR为行号

相关文章

  • awk命令的使用

    awk命令的使用 awk命令格式awk '条件1{动作1} 条件2{动作2}…' 文件名 在介绍awk命令的用法前...

  • AWK使用方法

    awk 用法:awk ' pattern {action} ' 变量名 含义 ARGC 命令行变元个数 ARGV ...

  • awk的用法

    一、awk命令用法 在Linux中,awk 即 gawk , awk的二进制文件为gawk的链接文件; ...

  • Linux的awk命令

    Linux的awk命令 众所周知awk命令是Linux一个非常重要又难以掌握的命令,下面对这个命令进行一个详细的说...

  • awk用法详解

    awk 用法 awk ' pattern {action} ' 1、awk '/101/' file ...

  • Linux

    linux awk命令详解、linux awk命令Linux常用操作指令Linux netstat命令详解 awk...

  • awk的使用方法

    awk 用法: 常用格式: awk [options 参数] 'commands' ...

  • 1-awk教程

    一、基本用法 awk的基本用法就是下面的形式。# 格式$ awk 脚本片段 文件名# 示例$ awk '{prin...

  • awk命令基本用法(一)

    一:awk文本过滤的基本用法 1)基本操作方法 其中,print 是最常用的编辑指令;多条编辑指令,用分号分隔;A...

  • awk命令基本用法(二)

    一:awk处理条件 使用正则设置条件,输出其中以bash结尾的完整记录: 输出包含root的行数据: 输出root...

网友评论

      本文标题:awk命令详细用法

      本文链接:https://www.haomeiwen.com/subject/prhcrdtx.html