首页 > 代码库 > awk
awk
-
在文件某一行上添加一列
#awk实现 awk -v a="add_chars" ‘{print $0} /REGE/{print $0,a}‘ file.txt 解释:-v:引入一个变量a,/REGE/:使用正则匹配一行 #sed实现 sed ‘/REGE/{s/.&/& add_chars/g}‘ file.txt 解释:/REGE/:匹配到正则REGE后进行替换动作
2.不同的行不同处理
shell> awk -v a="aaa" -v b="bbb" ‘NR<=4{if($6 ~ /TIME|ESTABLISHED/) print NR,$0,a;else if($6 ~ /LISTEN/) print NR,$0,b;else print NR,a,b } NR>4{print NR,$0,a,b}‘ netstat.txt 1 aaa bbb 2 aaa bbb 3 tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 961/sshd bbb 4 tcp 0 0 0.0.0.0:9080 0.0.0.0:* LISTEN 22296/nginx.conf bbb 5 tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1182/master aaa bbb 6 tcp 0 0 0.0.0.0:9180 0.0.0.0:* LISTEN 15297/httpd aaa bbb 7 tcp 0 0 0.0.0.0:5666 0.0.0.0:* LISTEN 23316/xinetd aaa bbb 8 tcp 0 0 127.0.0.1:199 0.0.0.0:* LISTEN 13571/snmpd aaa bbb 9 tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2131/mysqld aaa bbb 10 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 22296/nginx.conf aaa bbb 11 tcp 0 0 127.0.0.1:1446 127.0.0.1:80 TIME_WAIT - aaa bbb 12 tcp 0 0 127.0.0.1:3306 127.0.0.1:60675 TIME_WAIT - aaa bbb 13 tcp 0 0 127.0.0.1:3306 127.0.0.1:60663 TIME_WAIT - aaa bbb 14 tcp 0 0 127.0.0.1:3306 127.0.0.1:60668 TIME_WAIT - aaa bbb
解释:分两种情况:NR<=4{...}和 NR>4{...},分别进行不同的动作
{...}内的动作,如果需要多个命令辅助时,可以使用分号;隔开
3.多个条件匹配
awk ‘/nologin/ && NR<20 {if(NR<=2) print $1;else if(NR>2 && NR<10) print $2;else print $0}‘ passwd #区别: awk ‘/nologin/ && NR<20; {if(NR<=2) print $1;else if(NR>2 && NR<10) print $2;else print $0}‘ passwd #NR<20后面有分号,分号前后两个部分会分别执行,即重复输出
解释:
条件:/nologin/ && NR<+20
---条件中首先过滤出符合这两个条件的行
动作:if(NR<=2) print $1;else if(NR>2 && NR<10) print $2;else print $0
--在动作中对这些符合的行进一步处理
awk
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。