awk全集

NF(number of field)表示一行中的区域(列)数量,$NF取最后一个区域。表示最后一列
$符号表示取某个列(区域),$1,$2,$NF
NR (number of record) 行号,awk对每一行的记录号都有一个内置变量NR来保存,每处理完一条记录NR的值就会自动+1
FS(-F)field separator 列分隔符,以什么把行分隔成多列

awk全集_第1张图片

 

 



以空格为分割符 打印第一行 最后一列
ll |awk 'NR==1 {print $NF}'

一个awk的用法,ps -ef 获取第一列是mysql(user) 的进程pid号
ps -ef |grep -v grep |awk '{if($1=="mysql"){print $2}}'

 

可以有多个模式和动作

awk -F "#" 'NR==1{print $1}NR==4{print $1}'  1.txt

 

awk中 $0 表示整行

awk '{print $0}' 1.txt

获取倒数第二列

awk -F "#" '{print $(NF-1)}' 1.txt

 

正则

包含 666 的行 中的第一列。

awk -F "#" '/666/{print $1}' 1.txt

 

以#为分隔符,显示第一列以l开头或最后一列以9结尾的行

[root@jinkangldap ~]# cat 1.txt 
heloasd#asdf#asdf
asdf#asdfasdf#888
oooo#666#999
lll#kkk#jjj
[root@jinkangldap ~]# awk -F "#" '$1~/^l/{print $0}$NF~/9$/{print $0}'  1.txt 
oooo#666#999
lll#kkk#jjj

 

 打印 首行非l开头的行

awk -F "#" '$1!~/^l/{print $0}'  1.txt

 

你可能感兴趣的:(awk全集)