ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

awk命令--三剑客老大

2022-02-24 03:00:06  阅读:160  来源: 互联网

标签:sbin -- data nologin awk print root 三剑客


基本用法

awk [参数] ['找谁{干啥}'] 文件

参数

-F  分隔符
-v  创建或修改awk变量
OFS  输出分割符 awk显示每一列的时候分隔

'找谁{干啥}'

找谁==条件

比较表达式

==  等于
>=  大于等于
<=  小于等于
>   大于
<   小于

注:如果列不止数字,想只比较数字的话。可以用+0方法。eg:'$5+0>10'

正则表达式
表示包含或匹配 awk '$1~//dev/sda1/{print $2,$NF}' df.txt
!~ 不包含或不匹配
^ 是哪一列的开头
$ 是哪一列的结尾

范围

'NR==1,NR==5' 第1行到第3行
'$3==0,$3==1000' 第3列等于0到第3列等于1000
'/那个字符/,/到那个字符/'

注:不贪婪匹配,但可以匹配多次

特殊

&&       并且
||        或者
BEGIN{}       BEGIN 里面的内容会在awk读取文件之前执行
END{}        awk读取文件内容之后执END内容

{干啥==动作}

默认 '{print $0}'
  $0  显示整行
  $num  显示第num列
  $NF    显示最后一列
  $(NF-1)    显示倒数第2列
  NR      显示行号
gsub()
  条件:gsub(/找谁/,"替换为",哪一列)

注:有两个动作以上,需要用;分割

示例

  1. 显示/etc/passwd及行号
[root@maintain data]# awk -F':' '{print NR,$0}' /etc/passwd
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8 halt:x:7:0:halt:/sbin:/sbin/halt
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10 operator:x:11:0:operator:/root:/sbin/nologin
11 games:x:12:100:games:/usr/games:/sbin/nologin
12 ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
13 nobody:x:99:99:Nobody:/:/sbin/nologin
14 systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
15 dbus:x:81:81:System message bus:/:/sbin/nologin
16 polkitd:x:999:998:User for polkitd:/:/sbin/nologin
17 sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
18 postfix:x:89:89::/var/spool/postfix:/sbin/nologin
19 ntp:x:38:38::/etc/ntp:/sbin/nologin
  1. 显示/etc/passwd 第1列,第3列 倒数二列和最后一列
[root@maintain data]# awk -F':' '{print $1,$3,$(NF-1),$NF}' /etc/passwd
root 0 /root /bin/bash
bin 1 /bin /sbin/nologin
daemon 2 /sbin /sbin/nologin
adm 3 /var/adm /sbin/nologin
lp 4 /var/spool/lpd /sbin/nologin
sync 5 /sbin /bin/sync
shutdown 6 /sbin /sbin/shutdown
halt 7 /sbin /sbin/halt
mail 8 /var/spool/mail /sbin/nologin
operator 11 /root /sbin/nologin
games 12 /usr/games /sbin/nologin
ftp 14 /var/ftp /sbin/nologin
  1. 显示出/etc/passwd中 第3列大于80的行
    条件:第3列大于80
        $3>80
    动作:不写(默认{print $0})
[root@maintain data]# awk -F':' '$3>80' /etc/passwd
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
  1. 显示磁盘使用率 大于10% 的磁盘分区和挂载点(目录)
    条件:使用率大于10
        $5>10
    动作:显示磁盘分区和挂载点
        print $1,$NF
[root@maintain data]# df | awk '$5+0>10' 
/dev/sda2        10G  1.4G  8.7G  14% /
/dev/sda1       497M  117M  381M  24% /boot
  1. 统计 /etc/services 文件中空行的数量
[root@maintain data]# awk '/^$/{i++}END{print i}' /etc/services 
17
  1. 创建一个test文本,包括以下内容:
    Zhang Dandan 41117397 :250

    标签:sbin,--,data,nologin,awk,print,root,三剑客
    来源: https://www.cnblogs.com/jiaxzeng/p/15929953.html

    本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
    2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
    3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
    4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
    5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有