awk

来源:互联网 发布:新疆英吉沙小刀淘宝店 编辑:程序博客网 时间:2024/06/06 06:36

9.6 awk(上)

  1. awk比sed功能更丰富,它支持分段匹配字符。
    awk没有支持更改文档内容的选项,而sed -i 能更改。
  2. 截取文档中的某段
    awk -F ‘:’ ‘{print $n}’ filename
    -F指定分隔符号 如果不加-F选项,则以空格或者tab为分隔符
    这里写图片描述
    n 0时,表示整行
    print表示打印 它的动作要使用{ }括起来,否则会报错。
    这里写图片描述
    3 . 查看文件里全部的内容可使用awk ‘{print $0}’ filename
    作用与cat命令的效果一样

4.指定多段打印
这里写图片描述

5.打印出来的内容 默认使用空格作为分隔 也是可以自定义符号,方便查看内容。自定义符号需要用双引号引起来,不适合段数太多的文档
这里写图片描述

6.匹配字符或字符串
使用awk匹配比sed要简单
例 :
sed格式为:sed -n ‘/root/’p test.txt
awk格式 :awk ‘/root/’ test.txt
这里写图片描述

7.针对某段来匹配字符或字符串的用法
~ 符号表示匹配的意识
例:
awk -F ‘:’ ‘$6 ~ /var/’ test.txt
这里写图片描述

支持正则表示式
这里写图片描述

8.awk同时支持多个表达式
例:
这里写图片描述
第一条与第三条打印的内容是一样的, 写法不同

9.数学运算表达式
例:
awk -F ‘:’ ‘3==0  test.txt302=,=printprint  0
这里写图片描述

比较数字也可以写成>=
这里写图片描述

在和数字比较时,若把比较数字用双引号引起来,那么awk不会认为是数字,而认为是字符,相当于sort 不加-n选项,会以ASCII码进行排序 ,那第3段数字大小是上升的,不加双引号则会认为是数字
这里写图片描述

打印出某段不匹配某内容的
这里写图片描述
!= 表示不匹配


9.7 awk(下)
1.除了针对某一个段的字符进行比较,还可以在2个段之间进行比较
这里写图片描述

2.也可以使用&&(并且)
这里写图片描述

3.还可以使用|| (或者)
这里写图片描述

4.内置变量
awk常用的变量有OFS 、NF 、NR
OFS 和-F 选项有类似的功能,也是用来定义分隔符的,但是它是在输出的时候定义,NF表示用分隔符分隔后一共有多少段,NR表示行号

OFS的使用
这里写图片描述

NR的使用
查看一共有多少行
这里写图片描述
类似grep -n 显示行号

NF的使用
查看一行有多少段
这里写图片描述

使用NF和NR作为条件判断

这里写图片描述

  • $ 1=”root” 表示赋值 赋值后分隔号会消失,{OFS=”:”} 可以定义分隔符
    $ 1==”root” 表示匹配
    这里写图片描述

文件中所有的某段求和
这里写图片描述
{(tot=tot+$3)} 表示tot的值每次循环都会把第3段的值相加 第一次操作tot值为零。
这里写图片描述

原创粉丝点击