1.awk的工作原理
逐行读取文本,默认以空格或tab键为分隔符进行分隔,将分隔所得的各个字段保存到内建变量中,并按模式或者条件执行编辑命令;
sed命令常用于一整行的处理,而awk比较倾向于将一行分成多个“字段”再进行处理;
awk信息的读入也是逐行读取的,执行结果可以通过print的功能将字段数据打印显示;
在使用awk命令的过程中,可以使用逻辑操作符“&&”表示与、“||”表示或、“!”表示非,还可以进行简单的数学运算如+-*/%^,分别表示加减乘除取余或者乘方。
2.awk的使用格式:
awk 选项 '模式或条件{操作}' 文件1 文件2
awk -f 脚本文件 文件1 文件2 ...
3.awk的内置变量,使用前每个变量前须加 -v 的命令选项:
- FS :输入字段分隔符,默认为空白字符
- OFS :输出字段分隔符,默认为空白字符
- RS :输入记录分隔符,指定输入时的换行符,原换行符仍有效
- ORS :输出记录分隔符,输出时用指定符号代替换行符
- NF :字段数量,共有多少字段, (NF-1)引用倒数第2列
- NR :行号,后可跟多个文件,第二个文件行号继续从第一个文件最后行号开始
- FNR :各文件分别计数, 行号,后跟一个文件和NR一样,跟多个文件,第二个文件行号从1开始
- FILENAME :当前文件名
-
$0 表示整个当前行
$1 每行第一个字段
- ARGC :命令行参数的个数
- ARGV :数组,保存的是命令行所给定的各参数,查看参数
4.awk里通配符的使用:
\t 制表符
\n 换行符
~ 匹配,与==相比不是精确比较
!~ 不匹配,不精确比较
== 等于,必须全部相等,精确比较
!= 不等于,精确比较
&& 逻辑与
|| 逻辑或
+ 匹配时表示1个或1个以上
/[0-9][0-9]+/ 两个或两个以上数字
/[0-9][0-9]*/ 一个或一个以上数字
5.使用尝试:
(1) 找出 /etc 一级目录下,大于 1024B的普通文件 :
(2)取出 passwd 文件中id 小于等于 5 的 用户名字 和 id号:
(3)打印出/etc/passwd文件中所有路径为/bin/bash
的所有用户名以及路径: