Linux学习笔记正则表达式awk

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

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

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

2.匹配字符或者字符串文档

3.条件操做符字符串

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

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

4.awk的内置变量awk

awk经常使用的变量有:变量

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

NR :行数

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

5.awk中的数学运算

awk能够把段值更改:

习题

  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
相关文章
相关标签/搜索