1.awk
awk -F ‘{pattern + action}’ {filename}
-F:指定分隔符
-f:调用脚本
-v:定义变量
- 支持自定义分隔符
- 支持正则表达式匹配
- 支持自定义变量、数组
- 支持内置变量
- ARGC 命令行参数个数
- ARGV 命令行参数排列
- NF 浏览记录的域的个数
- NR 已读纪录数
- 支持函数
- print、split、substr、sub、gsub
- 支持流程控制语句,类C语言
- if、while、do/while 、for、brak、continue
首先把/etc/passwd拷贝下来使用
1.1只显示/etc/passwd的账户
awk -F ':' '{print $1}' passwd
1.2 显示账户和账户的shell,并且开头打印name\tshell,结尾打印blue,/bin/nosh
awk -F ':' 'BEGIN{prnit "name\tshell"}{print $1"\t"$7}END{print "blue\t/bin/nosh"}' passwd
1.3 搜索与root有关的行
awk '\root\ {print $0}' passwd
1.4 统计文件中,每行行号和列数,对应的完整内容
awk '\:\ {print NR " " NF $0}' passwd
2.语句分析
awk -F: '{print $1}' passwd
这句话等同于awk -F’:’ ‘{print $1}’ passwd
awk -F: '{print $1,$3,$6}' OFS="\t" /etc/passwd
加了逗号就表示默认分隔符是空格,OFS表示print之间用什么来显示分隔,这条语句是\t
awk -F: '/root/ {print}' passwd
只打印含有root的行
awk -F: '!/root/ {print}' passwd
只打印不含root的行
awk -F: '/root|r1chie/ {print}' passwd
只打印含有root或r1chie的行
awk -F: '$1~/root/ {print}' passwd
~:包含的意思
打印第一个字段包含root的行
awk '/[^@ \n\r\t]+@[^@ \n\r\t]+\.[^@\n\r\t]+/' hello.txt
使用正则表达式来匹配邮箱
参考:https://blog.youkuaiyun.com/qq_36119192/article/details/82982732