Linux学习笔记正则表达式awk

awk和sed一样是流式编辑器,它也是针对文档中的行来操作的,一行一行的去执行。awk比sed更加强大,它能做到sed能做到的,同样也能做到sed不能做到的。awk工具其实是很复杂的,但是学那么复杂没有必要,只要能处理日常管理工作中的问题即可。

1.截取文档中的某个命令

114609_NTOp_3711354.png

-F选项的作用是指定分隔符。如果不加-F选项,则以空格或者TAB为分隔符。print为打印的动作,用来打印某个字段。$1为第1个字段,$2为第2个字段,$0表示整行

2.匹配字符或者字符串

114949_8Yks_3711354.png

3.条件操作符

115054_J1I4_3711354.png

awk中是可以用逻辑符号判断的,比如 ‘==’ 就是等于,也可以理解为 ‘精确匹配’ 另外也有 >, ‘>=, ‘<, ‘<=, ‘!= 等等,值得注意的是,在和数字比较时,若把比较的数字用双引号引起来后,那么awk不会认为是数字,而认为是字符,不加双引号则认为是数字。

115126_jVxz_3711354.png

另外还可以使用 && 和 || 表示 “并且” 和 “或者” 的意思。

115208_DE4f_3711354.png

4.awk的内置变量

awk常用的变量有:

NF :用分隔符分隔后一共有多少段

NR :行数

115243_hZLP_3711354.png

NF 是多少段,而$NF是最后一段的值, 而NR则是行号。

115309_7Wzs_3711354.png

5.awk中的数学运算

awk可以把段值更改:

115337_bqhm_3711354.png

习题

  1. 用awk 打印整个test.txt (以下操作都是用awk工具实现,针对test.txt)
  2. 查找所有包含 ‘bash’ 的行
  3. 用 ‘:’ 作为分隔符,查找第三段等于0的行
  4. 用 ‘:’ 作为分隔符,查找第一段为 ‘root’ 的行,并把该段的 ‘root’ 换成 ‘toor’ (可以连同sed一起使用)
  5. 用 ‘:’ 作为分隔符,打印最后一段
  6. 打印行数大于20的所有行
  7. 用 ‘:’ 作为分隔符,打印所有第三段小于第四段的行
  8. 用 ‘:’ 作为分隔符,打印第一段以及最后一段,并且中间用 ‘@’ 连接 (例如,第一行应该是这样的形式 'root@/bin/bash‘ )
  9. 用 ‘:’ 作为分隔符,把整个文档的第四段相加,求和

答案

1. awk '{print $0}' test.txt
2. awk '/bash/' test.txt
3. awk -F':' '$3=="0"' test.txt
4. awk -F':' '$1=="root"' test.txt |sed 's/root/toor/'
5. awk -F':' '{print $NF}' test.txt
6. awk -F':' 'NR>20' test.txt
7. awk -F':' '$3<$4' test.txt
8. awk -F':' '{print $1"@"$NF}' test.txt
9. awk -F':' '{(sum+=$4)}; END {print sum}' test.txt

 

 

 

转载于:https://my.oschina.net/u/3711354/blog/1577811

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值