咨询热线:4006-75-4006

售前:9:00-23:30    备案:9:00-18:00    技术:7*24h

简单理解awk命令

2016-02-03 16:35:28 8933次

1.awk是一个非常棒的数据处理工具,sed常常用于一个整行的处理,awk则比较倾向于一行中分成数段的数据处理,通常的模式是这样的:

    awk ‘条件类型{动作1} 条件类型2{动作2} ....’ filename

2.cat /etc/passwd | awk -F : ‘{print $1 “ ” $4 “ ” $5}’

     

    从以上截图看出用参数-F指定域分隔符,然后打印出/etc/passwd文件的第1列、第4列、第5列,并且每列用tab隔开

    -F 表示指定分隔符,默认的是空格,如果有文档中有空格那么不需要用这个参数,相当于”cut -d “:” -d 1”命令;

    “ ”表示tab;

    在每个动作完成之后都会执行 另起一行;

3.cat /etc/passwd | awk -F : ‘BEGIN {print “name” “ ” “shell”} {print $1 “ ” $7} END {print “end” “ ” “end”}’

     

    awk工作流程是这样的:先执行BEGING,然后读取文件,读入有/n换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,$0则表示所有域,$1表示第一个域,$n表示第n个域,随后开始执行模式所对应的动作action。接着开始读入第二条记录······直到所有的记录都读完,最后执行END操作。

3.awk ‘/nginx/’ /etc/passwd

     

此时的awk命令就相当于grep nginx /etc/passwd命令

4.df -h | awk ‘$4>20’ 打印第四列数字大于20的行

     

5.awk几个内建变量

    (1)NF  每一行($x)拥有的栏位总数

    (2)NR  目前awk所处理的是第几行数据

    (3)FS   目前的分隔字节,默认的是空白键

    例如:cat /etc/passwd | awk -F ":" {print $1 " " $7 "  lines:" NR "  columns:" NF}

    

首页
最新活动
个人中心