AWK简介及使用

本文详细介绍了awk编程语言,包括其在Linux运维中的应用,如何使用正则表达式,处理时机(BEGIN, { }, END)以及数组、逻辑组合等特性。通过实例展示了awk如何用于统计、搜索和数据处理。" 108984784,8761950,AutoCAD环境配置与图形操作指南,"['AutoCAD设置', '图形显示', '窗口管理', '参数配置', '绘图精度']
摘要由CSDN通过智能技术生成

awk编程语言/数据处理引擎

一、简述:

1、基于模式匹配检查输入文本,逐行处理并输出
2、通常用在shell脚本中,获取指定数据
3、单独使用时,可对文本数据做统计

二、常用命令格式

1、前置命令 | awk [选项] ’[条件] {指令}’
2、awk [选项] ‘[条件] {指令}’ 文件路径

三、常用选项

1、-F:指定打印的分隔符,可省略(默认是空格和TAB位作为分隔符)

四、常用内置变量

1、FS:保存或设置字段分割符,例如FS=”:” ,与-F功能一样
2、$n:指定分隔的第n个字段,如$1、$2分别表示第一列、第二列
3、$0:表示当前读入文本里的整行内容
4、NF:表示当前读入文本里的列数
5、NR:表示当前读入文本里的行数

举例
(1)打印ens33网卡的IP地址,/ens33$/查找以ens33字符结尾的行,$2打印第二列,默认分隔符为空格。

[root@localhost ~]# ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:7f:4c:93 brd ff:ff:ff:ff:ff:ff
    inet 192.168.4.8/24 brd 192.168.4.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::91e5:778d:5a20:5a4f/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:09:b5:c0 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
    link/ether 52:54:00:09:b5:c0 brd ff:ff:ff:ff:ff:ff
[root@localhost ~]$ ip a s | awk '/ens33$/{print $2}'
192.168.4.8/24

(2)打印CPU型号,当需要打印的内容包含多个空格时可以使用-F选项指定打印的分隔符为“:”,/Model name/指查找字符为Model name的行,$2打印第二列。

[root@localhost ~]# lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                2
On-line CPU(s) list:   0,1
Thread(s) per core:    1
Core(s) per socket:    2
Socket(s):             1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 151
Model name:            12th Gen Intel(R) Core(TM) i7-12700KF
Stepping:              2
CPU MHz:               3609.598
BogoMIPS:              7219.19
Hypervisor vendor:     VMware
Virtualization type:   full
L1d cache:             48K
L1i cache:             32K
L2 cache:              1280K
L3 cache:              25600K
NUMA node0 CPU(s):     0,1
[root@localhost ~]$ lscpu |awk -F: '/Model name/ {print $2}'
            12th Gen Intel(R) Core(TM) i7-12700KF

(3):已“:”为分隔符,打印操作系统用户信息passwd.txt文件的行数(NR),列数(NF),以及文件的所有内容($0)

[root@localhost ~]# awk -F: '{print NR,NF,$0}' passwd.txt
1 7 root:x:0:0:root:/root:/bin/bash
2 7 bin:x:1:1:bin:/bin:/sbin/nologin
3 7 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 7 ntp:x:38:38::/etc/ntp:/sbin/nologin
5 7 gdm:x:42:42::/var/lib/gdm:/sbin/nologin
6 7 gnome-initial-setup:x:989:983::/run/gnome-initial-setup/:/sbin/nologin
7 7 sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
8 7 avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
9 7 postfix:x:89:89::/var/spool/postfix:/sbin/nologin
10 7 tcpdump:x:72:72::/:/sbin/nologin
11 7 lrh:x:1000:1000:lrh:/home/lrh:/bin/bash
12 7 apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin

(4)打印apache用户所在文本的行数以及整行内容

[root@localhost ~]$ awk -F: '/apache/{print NR,$0}' /etc/passwd
44 apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin

五、awk处理时机,可以安排额外的任务

  1. BEGIN{ }: 放在BEGIN花括号里的命令只会执行1次
  2. { }逐行任务: 放在花括号里的命令可执行n次,具体次数根据文本行数决定
  3. END{ }: 放在END花括号里的命令只会执行1次
  • 举例:
  • 文本内容如下:
cat ys.txt
keli     8       1.27    200
shenli   18      1.56    50000
zhongli  6000    1.86    0
kaiya    30      1.86    30000
ko
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值