awk
9.6 awk(上)
- awk比sed功能更丰富,它支持分段匹配字符。
awk没有支持更改文档内容的选项,而sed -i 能更改。 - 截取文档中的某段
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 ‘:’ ‘
比较数字也可以写成>=
在和数字比较时,若把比较数字用双引号引起来,那么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值为零。