第6周第5次课(4月27日)

课程内容:

9.6/9.7 awk
扩展
把这里面的所有练习题做一下
http://www.apelearn.com/study_v2/chapter14.html

9.6/9.7 awk

AWK支持分段,可以针对每一段去匹配打印出来。

操作实例如下

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

分隔符为:冒号,指定第一段打印出来,这个操作也不会去更改文件本身的内容。

[root@jimmylinux-002 awk]# awk -F ':' '{print $0}' test.txt

把所有的段打印出来

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

打印所有内容,相当于cat命令,如果awk忽略了-F,也就是没有指定分隔符,默认将会以空格或空白字符为分隔符去打印。

[root@jimmylinux-002 awk]# vim 1.txt  创建一个测试文件

[root@jimmylinux-002 awk]# awk -F ':' '{print $1,$3,$4}' test.txt

把$之间用,逗号分开,将1、3、4段都打印出来

[root@jimmylinux-002 awk]# awk -F ':' '{print $1"#"$3"#"$4}' test.txt  指定中间以#分隔

[root@jimmylinux-002 awk]# awk '/oo/' test.txt

把带有oo的内容匹配出来并列出结果

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

把第一段符合oo内容的匹配出来

[root@jimmylinux-002 awk]# awk -F ':' '$1 ~ /o+/' test.txt

同样也支持正则表达式匹配

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

AWK同样也支持多个表达式一起写

[root@jimmylinux-002 awk]# awk -F ':' '/root|user/ {print $0}' test.txt

包含root或者包含user的全部打印出来

针对数学运算表达式

加双引号就相当于sort以ASCII排序方式去计算的,会认为是一个字符串而不是数字,不会按数字算,如果需求是针对数字的,就不要加双引号。

[root@jimmylinux-002 awk]# awk -F ':' '$7!="/sbin/nologin" {print $0}' test.txt

把第7段不等于/sbin/nologin全部打印出来(!=表示不等于)

把2个字段相互比较

2个条件一起使用,$3>5并且$3<7

$3>1000或者$7=/sbin/nologin

$3>1000或者$7匹配bash的

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

如果有多段-F指定分段前的分隔符,OFS用来指定print时候用到的分隔符(OFS写在最前,然后写条件,最后写语句)

如果不加条件就表示全部(2个花括号中间写条件)

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

还可以增加一些修饰符,定义完分隔符,然后print的分隔符,中间是条件和后面一起写。

也可以这样使用,就不需要在加if条件。

NR  表示行  NF  表示段

[root@jimmylinux-002 awk]# awk -F ':' '{print $NR":"$NF}' test.txt

$NR  一共有多少行,$NF一共多少段,总共就只有7段,那么打印第8段时候,因为没有东西所以就是空的。

2个等于号相对应的功能

tot  求和每一次循环都会把第3段相加,一直加到最后并打印出来。

grep、egrep、sed、awk 是非常重要的正则表达式相关的工具

最新文章

  1. PDO
  2. SQL Server全时区转换
  3. 分享我们项目中基于EF事务机制的架构
  4. python--常见模块
  5. Redis常用的30个命令
  6. linux 防火墙配置
  7. lua metatable和metamethod元表和元方法
  8. 【转】Java中字符串中子串的查找共有四种方法(indexof())
  9. 挺有意思的HBase日志+Splunk
  10. 夜神模拟器与HBuilder连接/cmd运行提示符/执行夜神模拟器命令/执行HBuilder命令
  11. ThinkServer TD340服务器安装操作系统[转]
  12. Postman接口自动化测试实例二
  13. Centos6.10 安装Python 2.7.16
  14. io系列之其他类
  15. codeforce 240E
  16. Python Redis list
  17. 微信小程序之----获取设备信息
  18. 关于Oracle游标out参数多层调用的BUG,ORA-06504
  19. Python四大主流网络编程框架
  20. Intellij IDEA Module 的Language Level的问题

热门文章

  1. 使用float设置经典的网站前端结构(深入探讨)
  2. 使用jieba分析小说人物出现次数
  3. [考试反思]0819NOIP模拟测试26:荒芜
  4. Birt报表
  5. NOIP模拟测试6
  6. 『题解』Codeforces656E Out of Controls
  7. Python 定义动态变量
  8. mysql导入sql出错,无脑解决办法
  9. 创建基于OData的Web API - Knowledge Builder API, Part I:Business Scenario
  10. C# II: Class ViewModelBase and RelayCommand in MVVM