AWK运算符
运算符 | 说明 |
---|---|
赋值运算符 | = += -= *= /= %= ^= **= |
逻辑运算符 | |
|| | 逻辑或 |
&& | 逻辑与 |
正则运算符 | |
~ !~ | 匹配正则表达式和不匹配正则表达式 |
关系运算符 | |
< <= > >= != == | 关系运算符 |
算术运算符 | |
+ - | 加,减 |
*** / &** | 乘,除与求余 |
+ - ! | 一元加,减和逻辑非 |
^ *** | 求幂 |
++ – | 增加或减少,作为前缀或后缀 |
其他运算符 | |
$ | 字段引用 |
空格 | 字符串链接符 |
?: | 三目运算符 |
In | 数组中是否存在某键值 |
内置变量
变量名 | 属性 |
---|---|
$0 | 当前记录 |
1 n | 当前记录的第 n 个字段 |
FS | 输入字段分隔符 默认是空格 |
RS | 输入记录分割符 默认为换行符 |
NF | 当前记录中的字段个数,就是有多少列 |
NR | 已经读出的记录数,就是行号,从 1 开始 |
OFS | 输出字段分隔符 默认也是空格 |
ORS | 输出的记录分隔符 默认为换行符 |
特殊模式
- | - |
---|---|
BEGIN | awk 将在读取任何输入行之前立即执行BEGIN 中指定的动作 |
END | awk 将在它正式退出前执行 END中指定的动作 |
用法
去掉空白:
awk 'NF' file
统计行数:
awk 'END{print NR}' file
(END)偶数行:
awk 'NR%2==0 {print $n}' file
奇数行:
awk 'a=!a' file
指定分隔符:
awk -F ":" '{print $1}' file
使用正则:
awk '/^tecmint.com/ { counter+=1 ; printf "%s\n", counter ; }' file
打印多列:
awk -F ":" '{print $1 $2 .. $(NF-1) $NF}' /etc/passwd
多分隔符的用法:
echo i am a protester,myqq is 1112222|awk -F '[, ]' '{print $4 " " $7}'
多个分隔符使用正则:
awk -F"/|=" '{print $3, $5, $NF}' file
使用
[]
作为分隔符:awk -F '[][]' '{print $3;}' data
(这里[
]
分别占用两列 2个$
)获取以
[]
内的值:awk -F '[][*:]' '{print $8}'
text
|
|
也可以使用 `awk -F '[][*:]' '{print $8}'`
text
|
|