awk基本用法

awk,列过滤工具

格式:awk   [选项]    参数    文件

-F 制定分隔符      -f调用脚本

'  '   引用代码块,包含所有内容;

/  /  匹配代码块,可以是正则表达式;

{ }   匹配代码块,可以包含一个或多个;

;   多命令使用分号分隔;

BEGIN{}    开始就执行的操作,必须是{}的内容;

END          结束执行的操作;

NR             每一行的行号;

NF             当前行的字段个数;

# 以冒号分隔打印第一列

awk -F":" '{print $1}' passwd    

#NR代表行号,NF表示每行有几列

[root@Andy ~]# awk -F: '{print NR,NF}' passwd

1 7

2 7

3 7

4 7

5 7

6 7

7 7

8 7

#每行添加行号

awk -F: '{print NR,$0}' passwd

1 root:x:0:0:root:/root:/bin/bash

2 bin:x:1:1:bin:/bin:/sbin/nologin

3 daemon:x:2:2:daemon:/sbin:/sbin/nologin

4 adm:x:3:4:adm:/var/adm:/sbin/nologin

5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

#开始执行之前打印start,然后打印每一行,尾行执行stop

awk 'BEGIN{print "start"}{print }END{print "stop"}' passwd

#开始执行之前打印start,然后打印每行行号,最后打印end

awk -F: 'BEGIN{print "start"}{print NR}END{print"end"}' passwd

#先打印start,然后打印行号和$1的数据,最后打印END

awk -F":" 'BEGIN{print "start"}{print NR$1}END{print "END"}' passwd

start

1root

2bin

3daemon

#打印行号分号隔开换行打印内容

awk -F: 'BEGIN{print "START"}{print NR;print}END{print "END"}' passwd

START

1

root

2

bin

3

awk -F"/" '/bash$/{print}' passwd  #打印以bash结尾的行

awk -F":" '/^root/{print $1}' passwd #打印以root开始的$1

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。