awk工具
强大的文本分析工具,把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行分析处理。
awk [选项参数] ‘pattern1{action1}’ filename
- pattern:表示awk在数据中查找的内容
- action:找到匹配内容时执行命令
| 选项参数 | 功能 | 
|---|
| -F | 指定输入文件分隔符 | 
| -v | 赋值一个用户定义变量 | 
举个栗子
数据准备的是/etc/passwd
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 
 | [root@b09ed0cc2c9d opt]# cat passwdroot:x:0:0:root:/root:/bin/bash
 bin:x:1:1:bin:/bin:/sbin/nologin
 daemon:x:2:2:daemon:/sbin:/sbin/nologin
 adm:x:3:4:adm:/var/adm:/sbin/nologin
 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
 sync:x:5:0:sync:/sbin:/bin/sync
 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
 halt:x:7:0:halt:/sbin:/sbin/halt
 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
 operator:x:11:0:operator:/root:/sbin/nologin
 games:x:12:100:games:/usr/games:/sbin/nologin
 ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
 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
 
 | 
搜素passwd文件以root关键字开头的所有航,并输出该行的第7列
| 12
 3
 
 | [root@b09ed0cc2c9d opt]# awk -F : '/^root/{print $7}' passwd/bin/bash
 [root@b09ed0cc2c9d opt]#
 
 | 
搜素passwd文件以root关键字开头的所有航,并输出该行的第1列和第7列,输出时以逗号分隔
| 12
 
 | [root@b09ed0cc2c9d opt]# awk -F : '/^root/{print $1","$7}' passwdroot,/bin/bash
 
 | 
只显示/etc/passwd的第一列和第7列,以逗号分隔,且在所有航前面添加列名 user,shell在最后一行添加 ddd, /bin/zuishuai
| 1
 | [root@b09ed0cc2c9d opt]# awk -F : 'BEGIN{print "user,shell"} {print $1","$7} END{print "ddd,bin/zuishuai"}' passwd
 | 
将passwd 文件中的用户id增加数值1并输出
| 1
 | [root@b09ed0cc2c9d opt]# awk -F : -v i=1 '{print $3+i}' passwd
 | 
内置变量
| 变量 | 说明 | 
|---|
| filename | 文件名 | 
| nr | 已读的记录数 | 
| nf | 浏览记录的域的个数 | 
举个栗子
数据准备
| 12
 3
 4
 5
 6
 7
 
 | [root@b09ed0cc2c9d opt]# cat sed.txtdong shen
 guan zhen
 wo  wo
 lai  lai
 
 le  le
 
 | 
统计passwd文件名,每行的行号,每列的列数
| 1
 | [root@b09ed0cc2c9d opt]# awk -F : '{print FILENAME "," NR "," NF}' passwd
 | 
打印空行所在的行号
| 1
 | awk '/^$/ {print NR}' sed.txt
 | 
sort工具
文件排序
sort(选项)(参数)
| 选项 | 说明 | 
|---|
| -n | 按照数值大小排序 | 
| -r | 以相反的顺序排序 | 
| -t | 设置排序使用的分隔字符 | 
| -k | 指定需要排序的列 | 
参数是指定待排序文件列表