awk工具
2018-01-18 03:03
387 查看
awk工具
作用:针对文档中的行进行操作,截取功能;针对文档中的行来操作,一行一行的执行;打印文件
awk '{print $0}' test.txt截取文档中的某个段
head -n2 passwd.txt | awk -F ':' '{print $1}'
显示passwd.txt 2行 | 截取以:为分隔符的前面1段
-F作用是指定分隔符,默认为空格或者tab;
$1 为第一段 $2为第二段 $0为全部
[root@shu-test sed]# head -n2 test.txt root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin [root@shu-test sed]# head -n2 test.txt |awk -F ':' '{print $1}' root bin [root@shu-test sed]# [root@shu-test sed]# head -n2 test.txt |awk -F ':' '{print $1,$2,$3}' root x 0 bin x 1 [root@shu-test sed]#
匹配字符或字符串
awk '/oo/' test.txt匹配test.txt中字符oo
[root@shu-test sed]# awk '/oo/' test.txt root:x:0:0:root:/root:/bin/bash lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin [root@shu-test sed]#
awk -F ':' '$1 ~/oo/' test.txt
匹配test.txt中第一段中带有oo的;中间~为匹配意思
[root@shu-test sed]# awk -F ':' '$1~/oo/' test.txt root:x:0:0:root:/root:/bin/bash [root@shu-test sed]#
awk -F ':' '/root/ {print $1,$3} /user/ {print $1,$3}' test.txt
匹配带有root的行 并打印此行第一段与第三段,并再匹配user,打印第一段与第三段;
[root@shu-test sed]# awk -F ':' '/root/ {print $1,$3} /user/ {print $1,$3}' test.txt root 0 operator 11 user01 1000 user02 1001 user005 1008 user007 1007 [root@shu-test sed]#
条件操作符
(== 、> 、>= 、< 、<= 、!=)并且 或者(&& ||)awk -F ':' '$3=="0"' test.txt
将test.txt中意:为分隔符的第三段‘等于’0的行打印出来,双引号为字符串,不加双引号为数字;
[root@shu-test sed]# awk -F ':' '$3=="0"' test.txt root:x:0:0:root:/root:/bin/bash [root@shu-test sed]# awk -F ':' '$3=="1008"' test.txt user005:x:1008:1005::/home/user005:/bin/bash [root@shu-test sed]# [root@shu-test sed]# awk -F ':' '$3>=1000 {print $1}' test.txt user01 user02 user005 user007
awk的内置变量
-F 定义分隔符,OFS输出时定义一个分隔符,NF表示用分隔符分隔后一共有多少段,NR表示行号,NF段;head -5 test.txt |awk -F ':' '{OFS="#"} {print $1,$3,$4}'
打印前5行中以分隔符:为定义的第134段,并在输出的134段中加上分隔符#
[root@shu-test sed]# head -5 test.txt |awk -F ':' '{OFS="#"} {print $1,$3,$4}' root#0#0 bin#1#1 daemon#2#2 adm#3#4 lp#4#7 [root@shu-test sed]#
awk -F ':' '{OFS="#"} {if($3>500){print $1,$2,$3,$4}}' test.txt
增加判断语句如果第三段大于500才会输出1 2 3 4 段
[root@shu-test sed]# awk -F ':' '{OFS="#"} {if($3>500){print $1,$2,$3,$4}}' test.txt polkitd#x#999#997 chrony#x#998#996 user01#x#1000#1000 user02#x#1001#1001 user005#x#1008#1005 user007#x#1007#1005 [root@shu-test sed]#
以行号显示
[root@shu-test sed]# head -5 test.txt|awk -F ':' '{print NR":"$0}' 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 [root@shu-test sed]#
打印前十行
[root@shu-test sed]# awk -F ':' 'NR<=10' test.txt root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin [root@shu-test sed]#
awk中的数学运算
head -n2 test.txt |awk -F ':' '{$7=$3+$4;print $0}'第七段=第三段+第四段的 将所在行输出
0=0+0 2=1+1
[root@shu-test sed]# head -n2 test.txt |awk -F ':' '{$7=$3+$4;print $0}' root x 0 0 root /root 0 bin x 1 1 bin /bin 2 [root@shu-test sed]#
相关文章推荐
- 文本过滤工具之AWK
- Linux awk 工具探索
- linux下字符串处理工具二:awk( 二),awk脚本
- 日志分析常用工具(一) —— awk
- 【Linux】好用的数据处理工具 awk
- linux-awk【行扫描文本:样式扫描与处理工具】
- Linux指令_字段处理工具awk
- 正则表达之grep;sed;awk工具简述
- 样式扫描与处理工具命令awk
- #每日Linux小练习#05 awk-好用的数据处理工具
- awk---一个优秀的样式扫描与处理工具
- 鸟哥书籍awk工具学习
- awk工具使用
- sed,awk工具学习
- 基本shell编程【3】- 常用的工具awk\sed\sort\uniq\od
- 优秀的样式扫描与处理工具-AWK
- 详解 awk 工具的使用方法(转载)
- 详解 awk 工具的使用方法
- 01 awk工具的使用
- 读书笔记--find、sed、awk工具的使用