awk记录
awk初识
awk是一个高效的文本处理工具。awk通过文件或流读取数据,然后根据指定的分隔符对数据进行切片,然后通过规则对数据进行处理,最后输出!我们在linux上经常使用的unix awk的GUN版:gawk。
awk基础概念
awk有三个基础概念:
- 字段
- 数据
- 规则
如下数据文件data.txt所示:
姓名 上午 下午
陈二 数学 化学
张三 语文 数学
李四 数学 体育
王五 地理 语文
awk读取如上数据后,根据记录分割符RS(默认是换行符)把数据分为5条记录,根据字段分割符FS(默认是空格)把记录分成3个字段,并把每个字段赋予
1,
2…,$0表示整条记录。然后根据规则进行处理输出。
awk的命令形式:
awk [options] 'script' FILE....
awk [options] '/pattern/{action}' FILE...
1.如果我们想查看每个人上午什么课,就可以执行:
root@kali2:~# awk '{print $1,$2}' data.txt
姓名 上午
陈二 数学
张三 语文
李四 数学
王五 地理
在这一条操作中我们只是使用{action}即“{print 1, 2}”,其中 1, 2打印的是第一,第二列文件。
2.如果我们想查看张三的一天上什么课,就可以执行:
root@kali2:~# awk '/^张三/{print $0}' data.txt
张三 语文 数学
在这一条操作中我们使用了”//”及{print},”//”内使用的是正则表达式,/^张三/表示匹配以张三开头的记录,{print $0}表示打印这条记录。
3.如果我们想查看上午是数学的课的学生的课表,就可以执行:
root@kali2:~# awk '$2 ~ /数学/{print $1}' data.txt
陈二
李四
在这一条操作中我们使用了”~”表达式,表示第二列中匹配“数学”字符串的记录就打印出$1即第一列。