awk
文本分析工具,把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行分析处理。
1. 基本用法
awk [选项参数] ‘pattern1{action1} pattern2{action2}...’ filename
pattern:表示AWK在数据中查找的内容,就是匹配模式
action:在找到匹配内容时所执行的一系列命令
2. 选项参数说明
选项参数 | 功能 |
-F | 指定输入文件的分隔符 |
-v | 赋值一个用户定义变量 |
案例实操
数据准备
[cda@hadoop102 datas]$ sudo cp /etc/passwd ./
搜索passwd文件以root关键字开头的所有行,并输出该行的第1列和第7列,中间以“,”号分割。
[cda@hadoop102 datas]$ awk -F: '/^root/{print $1","$7}' passwd
root,/bin/bash
注意:只有匹配了pattern的行才会执行action
只显示/etc/passwd的第一列和第七列,以逗号分割,且在所有行前面添加列名user,shell在最后一行添加"good,/bin/learn"。
[cda@hadoop102 datas]$ awk -F : 'BEGIN{print "user, shell"} {print $1","$7} END{print "good,/bin/learn"}' passwd
user, shell
root,/bin/bash
bin,/sbin/nologin
。。。
cda,/bin/bash
good,/bin/learn
注意:BEGIN 在所有数据读取行之前执行;END 在所有数据执行之后执行。
将passwd文件中的用户id(第三列)增加数值1并输出
[cda@hadoop102 datas]$ awk -v i=1 -F: '{print $3+i}' passwd
2
3
4
5








暂无数据