引言
awk作为linux三剑客之首,是一个强大的文本分析工具,常用于对文本进行分隔处理。
常见用法
1. 打印指定列
$ ps -ef | head | awk '{print $2}'
PID
1
2
3
4
6
10
11
12
13
$ ps -ef | head | awk '{print $NF}' # 打印最后一列
- 如上,打印进程的第二列(进程号)
- $1、$2等:表示第几列
- $0:表示整行
- $NF:最后一列
- NR:行号
2. 按分割符进行分割
$ cat awk.txt
hello:2
jkl:3
$ cat awk.txt | awk -F':' '{print $1}'
hello
jkl
- 指定分隔符为’:',可以是单个字符,也可以是字符串
3. 对分割后的数据进行计算
$ cat awk.txt | awk -F':' '{sum+=$2;i+=1} END {print sum/i}'
2.5
4. 比较表达式(按匹配的内容进行打印)
$ cat awk.txt | awk -F':' '$1 ~ /hello/ {print $1,$2}' # 第一列包含hello的才会打印
hello 2
$ cat awk.txt | awk -F':' '$1 !~ /hello/ {print $1,$2}' # 第一列不包含hello的才会打印
jkl 3
$ cat awk.txt | awk -F':' '$2 <= 2 {print $1,$2}' # 第二列小于等于2的才会打印
hello 2
$ cat awk.txt | awk -F':' 'NR == 1 {print $0}' # 打印第一行
hello:2
-
~:模式匹配
-
!~:反向匹配
-
>:大于
-
<:小于
-
>=:大于等于
-
<=:小于等于
-
==:等于