概要:分别的作用

grep:文本过滤(模式:pattern)工具,grep,egrep,fgrep,擅长过滤。

sed:stream editor 文本编辑工具;(流编辑器),擅长取行、替换。

awk:linux上的实现gawk,文件报告生成器;(独立的编程语言),过滤内容,擅长取列。

find: linux上实时查找工具,通过便利指定路径下得文件系统完成文件查找。

一、awk

  awk能够进行文本处理和报表生产,经常用在linux日常处理的工作中

  1、语法参数格式为:awk 'pattern + {action}' file

    awk  选项 模式 动作 文件

  2、语法详解

       单引号时和shell命令区分开;

       大括号{}表示一个命令分组;

       pattern是要给过滤器,表示匹配pattern条件的行才进行action处理;

       action是处理动作,常见动作为print

       pattren和action可以只有其一,但不能都没有

  3、选项  

    -F 指定输入时用到的字段分隔符

    

    -v var=value:自定义变量

     

    

    

  4、模式介绍
     1)、BEGIN{ statements } 。
      让用户指定在第一条输入记录被处理之前所发生的动作,通常可在这里设置全局变量
      在输入被读取之前,statements执行一次
     2)、END{ statements }
      让用户在最后一条输入记录被读取之后发生的动作
      当所有输入被读取完毕之后,statements执行一次
     3)、expression{ statements }
      关系表达式,可以用下面运算符表中的关系运算符进行操作,如%2>%1选择第二个字段比第一个字段长的行。
      每碰到一个是expression为真的输入行,statements执行一次,expression为真指的是其值非零或非空
     4)、/regular expression/ { statements }
      通配符的扩展集
      碰到这样一个输入行时,statements就执行:输入行含由一段字符串,而该字符串可以被regular expression匹配
     5)、compound pattern { statements }
      一个复合模式将表达式用&&(AND),(OR),!(NOT),以及括号组合起来;当compound pattern为真时,statements执行。
     6)、pattern1,pattern2 { statements }
      模式,模式,指定一个行的范围不能包括BEGIN和END模式
      一个范围模式匹配多个输入行,这些输入行从匹配pattern1的行开始,到匹配pattern2的行结束(包括这两行),对这其中的每一行执行statements

   5、动作
    expression表达式,包括常量,变量,赋值,函数调用等等 。
    print expression-list
    printf(format,expression-list)
    if(expression)statements
    if (expression)statements else statements
    while (expression) statements
    for (expression in array)statements
    for (expression in array) statements
    do statements while (expression)
    break
    contnue

   6、变量

    $0所有内容,$1第一列,$2第二列,$NF最后一列,$FN-1倒数第二列

    各种变量如下:

  7、运算符号

     实例1、awk '{print $0}' /etc/passwd  

[root@web2 keepalived]# awk '{print $0}' /etc/passwd
root:x:::root:/root:/bin/bash
bin:x:::bin:/bin:/sbin/nologin
daemon:x:::daemon:/sbin:/sbin/nologin
adm:x:::adm:/var/adm:/sbin/nologin
lp:x:::lp:/var/spool/lpd:/sbin/nologin
sync:x:::sync:/sbin:/bin/sync
shutdown:x:::shutdown:/sbin:/sbin/shutdown
halt:x:::halt:/sbin:/sbin/halt
mail:x:::mail:/var/spool/mail:/sbin/nologin
operator:x:::operator:/root:/sbin/nologin
games:x:::games:/usr/games:/sbin/nologin
ftp:x:::FTP User:/var/ftp:/sbin/nologin
nobody:x:::Nobody:/:/sbin/nologin

    拆解一下具体的变量如下:

    

    实例2、打印uid在30~40范围内用户名

 [root@web2 keepalived]# awk -F: '$3>=30&&$3<=40{print $3}' /etc/passwd

 [root@web2 keepalived]# 

    实例3、打印第5-10行的行号和用户名

 [root@web2 keepalived]# awk -F: 'NR>=5&&NR<=10{print $1,NR}' /etc/passwd
lp
sync
shutdown
halt
mail
operator

    实例4、打印机奇偶数行

 [root@web2 keepalived]# awk -F: 'NR%2==1{print NR,$0}' /etc/passwd
root:x:::root:/root:/bin/bash
daemon:x:::daemon:/sbin:/sbin/nologin
lp:x:::lp:/var/spool/lpd:/sbin/nologin
shutdown:x:::shutdown:/sbin:/sbin/shutdown
mail:x:::mail:/var/spool/mail:/sbin/nologin
games:x:::games:/usr/games:/sbin/nologin
nobody:x:::Nobody:/:/sbin/nologin
systemd-network:x:::systemd Network Management:/:/sbin/nologin
polkitd:x:::User for polkitd:/:/sbin/nologin
unbound:x:::Unbound DNS resolver:/etc/unbound:/sbin/nologin
libstoragemgmt:x:::daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
colord:x:::User for colord:/var/lib/colord:/sbin/nologin
saslauth:x:::Saslauthd user:/run/saslauthd:/sbin/nologin
rtkit:x:::RealtimeKit:/proc:/sbin/nologin
nfsnobody:x:::Anonymous NFS User:/var/lib/nfs:/sbin/nologin
qemu:x:::qemu user:/:/sbin/nologin
chrony:x::::/var/lib/chrony:/sbin/nologin
sssd:x:::User for sssd:/:/sbin/nologin
gdm:x::::/var/lib/gdm:/sbin/nologin
sshd:x:::Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x::::/var/spool/postfix:/sbin/nologin
zhangxingeng:x:::centos--:/home/zhangxingeng:/bin/bash
mysql:x:::MariaDB Server:/var/lib/mysql:/sbin/nologin
[root@web2 keepalived]# awk -F: 'NR%2==0{print NR,$0}' /etc/passwd
bin:x:::bin:/bin:/sbin/nologin
adm:x:::adm:/var/adm:/sbin/nologin
sync:x:::sync:/sbin:/bin/sync
halt:x:::halt:/sbin:/sbin/halt
operator:x:::operator:/root:/sbin/nologin
ftp:x:::FTP User:/var/ftp:/sbin/nologin
systemd-bus-proxy:x:::systemd Bus Proxy:/:/sbin/nologin
dbus:x:::System message bus:/:/sbin/nologin
abrt:x::::/etc/abrt:/sbin/nologin
tss:x:::Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
rpc:x:::Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
usbmuxd:x:::usbmuxd user:/:/sbin/nologin
geoclue:x:::User for geoclue:/var/lib/geoclue:/sbin/nologin
rpcuser:x:::RPC Service User:/var/lib/nfs:/sbin/nologin
radvd:x:::radvd user:/:/sbin/nologin
ntp:x::::/etc/ntp:/sbin/nologin
setroubleshoot:x::::/var/lib/setroubleshoot:/sbin/nologin
pulse:x:::PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
gnome-initial-setup:x::::/run/gnome-initial-setup/:/sbin/nologin
avahi:x:::Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
tcpdump:x::::/:/sbin/nologin
nginx:x:::Nginx web server:/var/lib/nginx:/sbin/nologin
[root@web2 keepalived]#

    实例4、打印字段数大于5的行

 [root@web2 keepalived]# awk -F: 'NF>6{print $0}' /etc/passwd 
root:x:::root:/root:/bin/bash
bin:x:::bin:/bin:/sbin/nologin
daemon:x:::daemon:/sbin:/sbin/nologin
adm:x:::adm:/var/adm:/sbin/nologin
lp:x:::lp:/var/spool/lpd:/sbin/nologin
sync:x:::sync:/sbin:/bin/sync
shutdown:x:::shutdown:/sbin:/sbin/shutdown
halt:x:::halt:/sbin:/sbin/halt
mail:x:::mail:/var/spool/mail:/sbin/nologin
operator:x:::operator:/root:/sbin/nologin
games:x:::games:/usr/games:/sbin/nologin
ftp:x:::FTP User:/var/ftp:/sbin/nologin
nobody:x:::Nobody:/:/sbin/nologin
systemd-bus-proxy:x:::systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:::systemd Network Management:/:/sbin/nologin
dbus:x:::System message bus:/:/sbin/nologin
polkitd:x:::User for polkitd:/:/sbin/nologin
abrt:x::::/etc/abrt:/sbin/nologin
unbound:x:::Unbound DNS resolver:/etc/unbound:/sbin/nologin
tss:x:::Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
libstoragemgmt:x:::daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
rpc:x:::Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
colord:x:::User for colord:/var/lib/colord:/sbin/nologin
usbmuxd:x:::usbmuxd user:/:/sbin/nologin
saslauth:x:::Saslauthd user:/run/saslauthd:/sbin/nologin
geoclue:x:::User for geoclue:/var/lib/geoclue:/sbin/nologin
rtkit:x:::RealtimeKit:/proc:/sbin/nologin
rpcuser:x:::RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:::Anonymous NFS User:/var/lib/nfs:/sbin/nologin
radvd:x:::radvd user:/:/sbin/nologin
qemu:x:::qemu user:/:/sbin/nologin
ntp:x::::/etc/ntp:/sbin/nologin
chrony:x::::/var/lib/chrony:/sbin/nologin
setroubleshoot:x::::/var/lib/setroubleshoot:/sbin/nologin
sssd:x:::User for sssd:/:/sbin/nologin
pulse:x:::PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
gdm:x::::/var/lib/gdm:/sbin/nologin
gnome-initial-setup:x::::/run/gnome-initial-setup/:/sbin/nologin
sshd:x:::Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
avahi:x:::Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
postfix:x::::/var/spool/postfix:/sbin/nologin
tcpdump:x::::/:/sbin/nologin
zhangxingeng:x:::centos--:/home/zhangxingeng:/bin/bash
nginx:x:::Nginx web server:/var/lib/nginx:/sbin/nologin
mysql:x:::MariaDB Server:/var/lib/mysql:/sbin/nologin
[root@web2 keepalived]#

    实例5、打印UID不等于GID的用户名

 [root@web2 keepalived]# awk -F: '$3!=$4{print $0}' /etc/passwd
adm:x:::adm:/var/adm:/sbin/nologin
lp:x:::lp:/var/spool/lpd:/sbin/nologin
sync:x:::sync:/sbin:/bin/sync
shutdown:x:::shutdown:/sbin:/sbin/shutdown
halt:x:::halt:/sbin:/sbin/halt
mail:x:::mail:/var/spool/mail:/sbin/nologin
operator:x:::operator:/root:/sbin/nologin
games:x:::games:/usr/games:/sbin/nologin
ftp:x:::FTP User:/var/ftp:/sbin/nologin
systemd-bus-proxy:x:::systemd Bus Proxy:/:/sbin/nologin
polkitd:x:::User for polkitd:/:/sbin/nologin
unbound:x:::Unbound DNS resolver:/etc/unbound:/sbin/nologin
libstoragemgmt:x:::daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
colord:x:::User for colord:/var/lib/colord:/sbin/nologin
saslauth:x:::Saslauthd user:/run/saslauthd:/sbin/nologin
geoclue:x:::User for geoclue:/var/lib/geoclue:/sbin/nologin
chrony:x::::/var/lib/chrony:/sbin/nologin
setroubleshoot:x::::/var/lib/setroubleshoot:/sbin/nologin
sssd:x:::User for sssd:/:/sbin/nologin
gnome-initial-setup:x::::/run/gnome-initial-setup/:/sbin/nologin
nginx:x:::Nginx web server:/var/lib/nginx:/sbin/nologin
[root@web2 keepalived]#

    实例6、打印1~100以内的7的倍数和包含7的数

 [root@web2 keepalived]# seq 1 100 | awk '$1~/7/||$1%7==0{print $1}'

    实例7、计算UID相加的总和;计算GID相加的总和

 [root@web2 keepalived]# awk -F: '{uid+=$3;gid+=$4}END{print uid;print gid}' /etc/passwd

 [root@web2 keepalived]# 

    实例8、找出普通用户和用户名并统计数量

      

 [root@web2 keepalived]#  awk -F: '{if($3>=500) sum+=1}END{print sum}' /etc/passwd

 [root@web2 keepalived]# 

      uid分组标记为:0 admin,1-499 sysuser,500 + users

 [root@web2 keepalived]# awk 'BEGIN{FS=":";OFS="\t";print "用户名\tUID\t权限"}{if($3==0)print $1,$3,"admin";else if($3<500)print $1,
> $,"sysusers";else print $,$,"users"}' /etc/passwd
用户名 UID 权限
root admin
bin sysusers
daemon sysusers
adm sysusers
lp sysusers
sync sysusers
shutdown sysusers
halt sysusers
mail sysusers
operator sysusers
games sysusers
ftp sysusers
nobody sysusers
systemd-bus-proxy users
systemd-network sysusers
dbus sysusers
polkitd users
abrt sysusers
unbound users
tss sysusers
libstoragemgmt users
rpc sysusers
colord users
usbmuxd sysusers
saslauth users
geoclue users
rtkit sysusers
rpcuser sysusers
nfsnobody users
radvd sysusers
qemu sysusers
ntp sysusers
chrony users
setroubleshoot users
sssd users
pulse sysusers
gdm sysusers
gnome-initial-setup users
sshd sysusers
avahi sysusers
postfix sysusers
tcpdump sysusers
zhangxingeng users
nginx users
mysql sysusers
[root@web2 keepalived]#

    

转载请注明出处:https://www.cnblogs.com/zhangxingeng/p/10743376.html 

  

简单介绍shell编程四剑客之awk的更多相关文章

  1. 简单介绍shell编程四剑客之grep

    概要:分别的作用 grep:文本过滤(模式:pattern)工具,grep,egrep,fgrep,擅长过滤. sed:stream editor 文本编辑工具:(流编辑器),擅长取行.替换. awk ...

  2. 简单介绍shell编程四剑客之sed

    概要:分别的作用 grep:文本过滤(模式:pattern)工具,grep,egrep,fgrep,擅长过滤. sed:stream editor 文本编辑工具:(流编辑器),擅长取行.替换. awk ...

  3. shell 编程四剑客简介 find sed grep awk(微信公众号摘抄)

    一,Shell编程四剑客之Find 通过如上基础语法的学习,读者对Shell编程有了更近一步的理解,Shell编程不再是简单命令的堆积,而是演变成了各种特殊的语句.各种语法.编程工具.各种命令的集合. ...

  4. Shell编程四剑客包括:find、sed、grep、awk

    一.Shell编程四剑客之Find Find工具主要用于操作系统文件.目录的查找,其语法参数格式为: find path -option [ -print ] [ -exec -ok command ...

  5. 编程四剑客awk

    awk  'pattern +{action}' file (1)AWK基本语法参数详解 a:单引号 ''是为了和shell命令区分开: b:大括号{}表示一个命令分组: c:pattern 是一个过 ...

  6. 四剑客(awk)

    AWK AWK简介 虽然sed编辑器是非常方便自动修改文本文件的工具,但其也有自身的限制.通常你需要一个用来处理文件中的数据的更高级工具,它能提供一个类编程环境来修改和重新组织文件中的数据.这正是ga ...

  7. shell学习四十天----awk的惊人表现

    awk的惊人表现 awk能够胜任差点儿全部的文本处理工作.     awk 调用 1.调用awk: 方式一:命令行方式 awk [-F field-separator ] 'commands' inp ...

  8. Linux四剑客之awk命令

    AWK详解   awk简介 awk其名称得自于它的创始人 Alfred Aho .Peter Weinberger 和 Brian Kernighan 姓氏的首个字母.实际上 AWK 的确拥有自己的语 ...

  9. Shell编程(六)awk工具

    1. {print} coins.txt gold USA American Eagle gold Austria Franz Josef Korona silver USA ingot gold S ...

随机推荐

  1. BZOJ_2152_聪聪可可_点分治

    BZOJ_2152_聪聪可可_点分治 Description 聪聪和可可是兄弟俩,他们俩经常为了一些琐事打起来,例如家中只剩下最后一根冰棍而两人都想吃.两个人都想玩儿电脑(可是他们家只有一台电脑)…… ...

  2. 虚拟机console基础环境配置——sshd安全登陆

    1. 概述2. 配置console的登陆2.1 配置sshd服务2.2 重启sshd服务2.3 无法登陆的问题解决3. 配置密钥登陆3.1 上传公钥的方式3.2 下载密码的方式3.3 虚拟机和宿主机共 ...

  3. SQL数据库的一些操作

    --以 MySQL为例 //登陆 mysql -u root -p //创建一个名为test_lib的数据库 CREATE DATABASE test_lib //删除一个名为test_lib的数据库 ...

  4. 张高兴的 Windows 10 IoT 开发笔记:串口红外编解码模块 YS-IRTM

    This is a Windows 10 IoT Core project on the Raspberry Pi 2/3, coded by C#. GitHub: https://github.c ...

  5. Maven安装教程详解

    一.准备工作 1.确定电脑上已经成功安装jdk7.0以上版本                 2.win10操作系统                 3.maven安装包            下载地 ...

  6. numpy C语言源代码调试(二)

    前一篇已经介绍,可以使用gdb进行调试,但是本人不太习惯gdb的文本界面,所以希望找一个比较好用的gdb的前端gui调试器. 想到的第一个是一个非常老的调试工具,DDD. DDD - Data Dis ...

  7. wGenerator如何编写模板

    编写模板大致分为4个步骤: 确定开发语言与数据库类型 分析表数据类型与语言的类型对应 分析代码中哪些可以规整为模板 编写与测试模板 我们对照流程图看的话会更加清晰: 1.如何分析表数据与开发语言的类型 ...

  8. 最详细的div边距合并的问题和解决方法

    对于前端来说写页面是最基础的东西了,但是想不到还是有人不理解边距合并的问题,昨天有网友问我为什么设置的margin不是我设置的实际效果? 好吧,废话不多说,下面来说一下关于margin合并的问题. 解 ...

  9. 彻底理解浏览器的缓存机制(http缓存机制)

    一.概述 浏览器的缓存机制也就是我们说的HTTP缓存机制,其机制是根据HTTP报文的缓存标识进行的,所以在分析浏览器缓存机制之前,我们先使用图文简单介绍一下HTTP报文,HTTP报文分为两种: 同步s ...

  10. mqtt服务器apollo的搭建和测试工具paho的使用

    (1)前言 MQTT协议是IBM开发的一个即时通讯协议; 基于发布/订阅的消息协议,近些年来被广泛应用于能源.电力.....等硬件性能低下的远程设备,此外国内很多企业使用MQTT作为android手机 ...