1、简介
awk的作用是逐行读取输入文本,按照命令找指定的行,找到的行打印操作。默认以空格为分隔符,多个空格会自动压缩成一个。awk默认就是打印。
-F:指定分隔符,直接跟,不用引用
-v:变量复制
用逗号指定连续的行,用||指定不连续的行,&&表示且。
2、内置变量
不能用引号引用起来
$0 | 打印全部 |
$n | 当前处理行的第n列 |
NR | 当前处理的行号 |
NF | 当前处理的行的字段个数,$NF代表最后一个字段 |
FS | 列分割符。指定每行文本的字段分隔符,输入内容的分隔符 |
3、打印
打印所有 awk '{print $0}' 123.txt
打印指定的列 awk '{print $3}' 123.txt
指定分隔符打印 awk -F: '{print $1,$3}' /etc/passwd
4、打印行号
awk '{print NR}' /etc/passwd
打印行号和内容 awk '{print NR}' /etc/passwd
5、指定行号输出
awk 'NR==3{print}' /etc/passwd
打印3到5行
awk 'NR==3,NR==5{print}' /etc/passwd
打印3和5行
awk 'NR==3;NR==5{print}' /etc/passwd
6,奇偶打印
偶:awk 'NR%2==0{print NR $0}' /etc/passwd
奇:awk 'NR%2==1{print NR $0}' /etc/passwd
7、运算
加
除
取幂
8、getline
awk的内置函数,两边没有重定向符号和管道符就是打印奇偶行