awk工具
2018-03-13 15:35
411 查看
awk工具
命令:awk选项:
-F 指定分隔符,如:-F ‘:’ 指定:号为分隔符awk截取文件的某个段(第一段):
[root@shuai-01 awk]# awk -F ':' '{print $1}' test.txt root bin daemon adm lp如果awk不指定分割符,他就会以空格为分隔符:
[root@shuai-01 awk]# awk '{print $1}' 1.txt 1 aa dd [root@shuai-01 awk]# cat 1.txt 1 2 aa bb dd cc匹配字符或者字符串:打印包含’oo’的行:
[root@shuai-01 awk]# 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打印第一段中有‘oo’的行:
[root@shuai-01 awk]# awk -F ':' '$1 ~/oo/' test.txt root:x:0:0:root:/root:/bin/bash将匹配’root’的行打印1,3段,匹配’user’打印全部:
[root@shuai-01 awk]# awk -F ':' '/root/ {print $1,$3} /user/ {print $0}' test.txt root 0 operator 11 tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin user1:x:1001:1001::/home/user1:/bin/bash user2:x:1003:1005::/home/user5:/bin/bash匹配包含“root”的或者包含“user”的:
[root@shuai-01 awk]# awk '/root|user/ {print $0}' test.txt root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin user1:x:1001:1001::/home/user1:/bin/bash user2:x:1003:1005::/home/user5:/bin/bash匹配第三段不是数字的(正则可用):
[root@shuai-01 awk]# awk -F ':' '$3 ~/[^0-9]/ {print $0}' test.txt root:x:shuai:0:root:/root:/bin/bash条件操作的(逻辑比较):
第三段等于零的:
[root@shuai-01 awk]# awk -F ':' '$3==0 {print $0}' test.txt root:x:0:0:root:/root:/bin/bash第三段大于1000的第一列第三列:
[root@shuai-01 awk]# awk -F ':' '$3>1000 {print $1,$3}' test.txt user1 1001 user2 1003第七段为“/bin/bash” 的(==):
[root@shuai-01 awk]# awk -F ':' '$7=="/bin/bash" {print $0}' test.txt root:x:0:0:root:/root:/bin/bash shuai:x:1000:1000::/home/shuai:/bin/bash user1:x:1001:1001::/home/user1:/bin/bash user2:x:1003:1005::/home/user5:/bin/bash第七段不是“/sbin/nologin”的(!=):
[root@shuai-01 awk]# awk -F ':' '$7!="/sbin/nologin" {print $0}' test.txt root:x:shuai:0:root:/root:/bin/bash sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt shuai:x:1000:1000::/home/shuai:/bin/bash user1:x:1001:1001::/home/user1:/bin/bash user2:x:1003:1005::/home/user5:/bin/bash第三段小于第四段($3<$4):
[root@shuai-01 awk]# awk -F ':' '$3<$4' test.txt adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin mail:x:8:12:mail:/var/spool/mail:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin user2:x:1003:1005::/home/user5:/bin/bash第三段大于5小于7($3>5 && $3<7):
[root@shuai-01 awk]# awk -F ':' '$3>5 && $3<7' test.txt shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown第三段大于1000或者第7段为“/bin/bash”:
[root@shuai-01 awk]# awk -F ':' '$3>1000 || $7=="/bin/bash"' test.txt root:x:shuai:0:root:/root:/bin/bash shuai:x:1000:1000::/home/shuai:/bin/bash user1:x:1001:1001::/home/user1:/bin/bash user2:x:1003:1005::/home/user5:/bin/bash第三段大于1000的或者其他段包含”/bash” :
[root@shuai-01 awk]# awk -F ':' '$3>1000 || /bash/' test.txt root:x:shuai:0:root:/root:/bin/bash shuai:x:1000:1000::/home/shuai:/bin/bash user1:x:1001:1001::/home/user1:/bin/bash user2:x:1003:1005::/home/user5:/bin/bash注意:匹配的时候是可以用正则的,但是条件操作(逻辑运算)不能用正则
awk的内置变量:
OFS :指定分割完之后的分割符{OFS=”#”}
NR:表示行号
NF :表示分割后有多少段分割完之后指定以#为分割符:
[root@shuai-01 awk]# awk -F ':' '{OFS="#"} {print $1,$2}' test.txt root#x bin#x daemon#x adm#x第三段大于1000输出第1,2,3段:
[root@shuai-01 awk]# awk -F ':' '{OFS="#"} {if ($3>1000) {print$1,$2,$3}}' test.txt root#x#shuai user1#x#1001 user2#x#1003显示行号:
[root@shuai-01 awk]# awk -F ':' '{print NR":"$0}' test.txt 1:root:x:shuai: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 6:sync:x:5:0:sync:/sbin:/bin/sync显示段数:
[root@shuai-01 awk]# awk -F ':' '{print NF":"$0}' test.txt 6:rootx:shuai:0:root:/root:/bin/bash 7:bin:x:1:1:bin:/bin:/sbin/nologin 7:daemon:x:2:2:daemon:/sbin:/sbin/nologin 7:adm:x:3:4:adm:/var/adm:/sbin/nologin 7:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin打印前五行:
[root@shuai-01 awk]# awk -F ':' 'NR<=5' test.txt rootx:shuai: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打印前十行中有root或者sync的行:
[root@shuai-01 awk]# awk -F ':' 'NR<=10 && /root|sync/' test.txt rootx:shuai:0:root:/root:/bin/bash sync:x:5:0:sync:/sbin:/bin/sync operator:x:11:0:operator:/root:/sbin/nologin将第一列全部赋值为root:
[root@shuai-01 awk]# head -n 3 test.txt |awk -F ':' '{OFS=":"} $1="root"' root:shuai:0:root:/root:/bin/bash root:x:1:1:bin:/bin:/sbin/nologin root:x:2:2:daemon:/sbin:/sbin/nologin将第三段全部加起来:
[root@shuai-01 awk]# awk -F ':' '{(tot=tot+$3)};END {print tot}' test.txt 6665
相关文章推荐
- Linux指令_字段处理工具awk
- 4000 shell工具之awk
- linux下字符处理工具grep,sed,awk
- 读书笔记--find、sed、awk工具的使用
- awk工具使用
- linux下字符串处理工具二:awk( 二),awk脚本
- 鸟哥书籍awk工具学习
- awk工具
- 经典的数据处理工具—awk
- 基本shell编程【3】- 常用的工具awk\sed\sort\uniq\od
- Linux awk 工具探索(转)
- shell 知识点补充(3)-修改语系/特殊字符/ printf/sed 工具/awk 工具/diff/cmp
- #每日Linux小练习#05 awk-好用的数据处理工具
- awk工具---待完善
- 【Linux】好用的数据处理工具 awk
- awk工具
- grep,sed,awk工具的使用
- linux下grep、awk和sed工具用法概览
- awk工具
- shell脚本工具之awk命令