9.6 awk(上);9.7 awk(下)

简介:

9.6 awk(上)

1. 创建awk目录做测试:

[root@hao-01 ~]# mkdir awk

2. 进入awk目录下:

[root@hao-01 ~]# cd awk

3. 拷贝/etc/passwd到当前目录并重命名为test.txt 

[root@hao-01 ~]# cp /etc/passwd test.txt

1. 打印 所有段($0)所有内容:

awk  '{print 所有段}' 文件名

[root@hao-01 awk]# awk  '{print $0}' test.txt

2. 打印 以:(冒号)为分隔符, 每行第一段($1):

awk -F '冒号分割符' '{print 第一段}' 文件名

[root@hao-01 awk]# awk -F ':' '{print $1}' test.txt

3. 打印 以:(冒号)为分隔符, 每行指定段(多个段):

awk -F '冒号分割符' '{print 第一段,第二段,第三段}' 文件名

[root@hao-01 awk]# awk -F ':' '{print $1,$2,$3}' test.txtclipboard.png

4. 打印 以:(冒号)为分隔符, 每行指定段(多个段),打印内容#号隔开

awk -F ':' '{print 第一段"井号"第二段"井号"第三段}' 文件名

[root@hao-01 awk]# awk -F ':' '{print $1"#"$2"#"$3}' test.txt

clipboard.png

5. 打印 匹配包含oo

awk '/匹配关键词/' 文件名

[root@hao-01 awk]# awk '/oo/' test.txt

clipboard.png

6. 匹配出 以:(冒号)为分隔符, 第一段中包含oo

awk -F '冒号分隔符' '指定段 ~ /匹配关键词/' 文件名

[root@hao-01 awk]# awk -F ':' '$1 ~ /oo/' test.txt

clipboard.png

7. 匹配出 以:(冒号)为分隔符,第一段中包含oo+(支持正则表达式):

awk -F '冒号分隔符' '$1 ~ /匹配关键词+/' 文件名

[root@hao-01 awk]# awk -F ':' '$1 ~ /oo+/' test.txt

clipboard.png

8. 匹配出 包含root的行,并打印出此行第一段第四段

                 包含user的行,并打印出此行第二段第三段 

awk -F '冒号分隔符' '/匹配关键词/{print 指定段,指定段} /匹配关键词/ {print 指定段,指定段}' 文件名

[root@hao-01 awk]# awk -F ':' '/root/{print $1,$4} /user/ {print $2,$3}' test.txt


匹配数字 :数字不加双引号!!!(字符串非数字需要双引号)

>=100     大于等于100

<=100     小于等于100

 =100      等于100

!=100       不等于100

9. 以:(冒号)为分隔符,匹配出第三段大于等于1000的行打印出第一段

( 需求是匹配数字数字不要双引号!)

awk -F '指定分隔符' '指定段>=匹配数字 {print 指定打印段}' 文件名

[root@hao-01 awk]# awk -F ':'$3>=1000 {print $1}' test.txt

10. :(冒号)为分隔符,匹配出第三段小于等于1000的行打印出全部段

awk -F '指定分隔符' '指定段<=匹配数字 {print 指定打印段}' 文件名

[root@hao-01 awk]# awk -F ':' '$3<=1000 {print $0}' test.txt

clipboard.png

11. :(冒号)为分隔符,匹配出第一段不等于关键词hao的行并打印出全部段

( 匹配是非数字字符串,要用双引号引起来! !=  表示不等于)

awk -F '指定分隔符' '指定段!="匹配的字符串"{print 指定打印段}' 文件名

[root@hao-01 awk]# awk -F ':'$1!="hao"{print $0}' test.txtclipboard.png

9.7 awk(下)

1. 以:(冒号)为分隔符,筛选出第三段数字值小于第四段数字值的行:

(注意  "这里的"数值"不代表数字组合

awk -F '指定分隔符'  '第三段数值<第四段数值'  文件名

[root@hao-01 awk]# awk -F ':'  '$3<$4'  test.txt

clipboard.png

2. :(冒号)为分隔符,筛选出第三段数值等于第四段数值的行:

(注意  "这里的"数值"不代表数字组合

awk -F '指定分隔符'  '第三段数值==第四段数值'  文件名

[root@hao-01 awk]# awk -F ':'  '$3==$4test.txt

clipboard.png

3. :(冒号)为分隔符,筛选出第三段数值大于5  &&(并且)小于

(注意  "这里的"数值"不代表数字组合

awk -F ':'  '第三段数值>"5" && 第三段数值<"7"文件名

[root@hao-01 awk]# awk -F ':'  '$3>"5" && $3<"7"test.txt

clipboard.png

4. :(冒号)为分隔符,筛选出第三段数字大于1000 ||(或者) 第七段数字大于等于/sbin/nologin 

awk -F '指定分隔符' '第三段>指定数字 || 第七段=="指定字符串"' 文件名

[root@hao-01 awk]# awk -F ':' '$3>1000 || $7=="/sbin/nologin"' test.txt

5. 以:(冒号)为分隔符,筛选出第三段数字大于1000 ||(或者) 第七段匹配关键词nologin的行

awk -F ':' '第三段>指定数字 || 第七段 ~ /匹配关键词/' 文件名

[root@hao-01 awk]# awk -F ':' '$3>1000 || $7 ~ /nologin/' test.txt

6. :(冒号)为分隔符,筛选出第三段数字大于1000 ||(或者)第七段匹配关键词nologin的行打印出第一段第三段第七段#号隔开!

awk -F '指定分隔符' '{OFS="指定打印分隔符"} 第三段>指定数字 || 第7段 ~ /匹配关键词/ {print 打印第一段,打印第三段,打印第七段}' 文件名

[root@hao-01 awk]# awk -F ':' '{OFS="#"} $3>1000 || $7 ~ /nologin/ {print $1,$3,$7}' test.txt

7. :(冒号)为分隔符,筛选出第三段数字大于1000的行第一段,第二段,第三段,第四段#号隔开!

[root@hao-01 awk]# awk -F ':' '{OFS="#"} {if ($3>1000) {print $1,$2,$3,$4}}' test.txt

8. 打印显示行号

[root@hao-01 awk]# awk -F ':' '{print NR":"$0}' test.txt

9. :(冒号)为分隔符,匹配出每行共有多少行段 

[root@hao-01 awk]# awk -F ':' '{print NF":"$0}' test.txt

10. 打印出110行:

[root@hao-01 awk]# awk -F ':' 'NR<10test.txt

11. 以:(冒号)为分隔符,筛选前10&&(并且)第一段含有root或者sync关键词的行:awk -F ':' 'NR<10&& 第一段 ~ /匹配关键词|匹配关键词/' 文件名

[root@hao-01 awk]# awk -F ':' 'NR<10 && $1 ~ /root|sync/' test.txtclipboard.png

12. :(冒号)为分隔符,匹配前六行 &&(并且)第一段含有root或者sync关键词的行:awk -F ':' 'NF==6&& 第一段 ~ /匹配关键词|匹配关键词/' test.txt

[root@hao-01 awk]# awk -F ':' 'NF==6 && $1 ~ /root|sync/' test.txt

13. 前三行输出结果,awk执行,以冒号分割符号,复值每行第一段都是root,并把打印出的结果以冒号隔开

[root@hao-01 awk]# head -n 3 test.txt |awk -F ':' '{OFS=":"} $1="root"'

clipboard.png

14. 打印行段 不用冒号分割,默认是空格隔开每段:

[root@hao-01 awk]# head -n 3 test.txt |awk -F ':' '$1="root"'clipboard.png15. :(冒号)为分隔符,设想hao等同于全部行第三段值总和 

[root@hao-01 awk]# awk -F ':' '{(hao=hao+$3)}; END {print hao}' test.txt

clipboard.png

练习题:

http://www.apelearn.com/study_v2/chapter14.html










本文转自 主内安详 51CTO博客,原文链接:http://blog.51cto.com/zhuneianxiang/2062110,如需转载请自行联系原作者
目录
相关文章
|
存储 JSON JavaScript
Python字典和JSON字符串相互转化方法
【2月更文挑战第18天】
565 3
|
测试技术 Android开发 虚拟化
踩坑记录 | Android 逆向之如何处理 Kali Nat 模式无法上网?
踩坑记录 | Android 逆向之如何处理 Kali Nat 模式无法上网?
626 0
|
Linux 网络安全 数据安全/隐私保护
Linux——配置SSH免密登录
Linux——配置SSH免密登录
387 0
|
存储 弹性计算 Cloud Native
2024年 | 1月云大使返佣规则
①推荐企业认证新用户首购最高可拿首购订单实付金额的45%奖励。②1月首单推广实付金额≥79元,领50元奖励。③重启推广新注册用户关联拥有30天保护期。④1月【2024开门红】达标激励活动,拉新首购达到相应阶段可额外获得最高4000元奖励!⑤调整大使等级升级人数门槛。⑥调整等级计数订单金额门槛。
2024年 | 1月云大使返佣规则
|
Docker 容器
如何查看docker版本|12
如何查看docker版本|12
496 3
|
算法 安全 C#
C#版开源免费的Bouncy Castle密码库
C#版开源免费的Bouncy Castle密码库
220 1
|
JavaScript 前端开发 算法
JQuery 基本使用,2024BAT大厂Web前端社招面试题
JQuery 基本使用,2024BAT大厂Web前端社招面试题
JQuery 基本使用,2024BAT大厂Web前端社招面试题
|
监控 关系型数据库 测试技术
性能压测工具选型对比
本文是《Performance Test Together》(简称PTT)系列专题分享的第二期,该专题将从性能压测的设计、实现、执行、监控、问题定位和分析、应用场景等多个纬度对性能压测的全过程进行拆解,以帮助大家构建完整的性能压测的理论体系,并提供有例可依的实战。
23769 88
|
网络协议 Java 数据处理
利用线程池多线程并发实现TCP两端通信交互,并将服务端设为守护进程(一)
利用线程池多线程并发实现TCP两端通信交互,并将服务端设为守护进程(一)
573 0
|
移动开发 小程序 JavaScript
微信小程序学习实录8:H5网页跳转小程序(微信开放标签、wx-open-launch-weapp按钮不显示、noPermissionJsApi)
微信小程序学习实录8:H5网页跳转小程序(微信开放标签、wx-open-launch-weapp按钮不显示、noPermissionJsApi)
1939 0