awk基础
awk基本语法如下
awk [options] 'Pattern{Action}' file
用法示例
print
duan@duan:~/awk_study$ echo test > test
duan@duan:~/awk_study$ awk '{print}' test
test
awk
以空格作为分隔符,连续空格当做一个,逐行处理
duan@duan:~/awk_study$ df
Filesystem 1K-blocks Used Available Use% Mounted on
udev 3955232 0 3955232 0% /dev
tmpfs 797944 2136 795808 1% /run
/dev/sdb3 114473116 21346168 87268952 20% /
tmpfs 3989720 97200 3892520 3% /dev/shm
tmpfs 5120 4 5116 1% /run/lock
tmpfs 3989720 0 3989720 0% /sys/fs/cgroup
/dev/loop0 89984 89984 0 100% /snap/core/5548
duan@duan:~/awk_study$ df | awk '{print $5}'
Use%
0%
1%
20%
3%
1%
0%
100%
100%
$0
显示整行,$NF
表示最后一列,NF
表示被分隔符切开后一工有几列,内置变量无法用双引号。
duan@duan:~/awk_study$ cat test | awk '{print $0" "$1"ffff$2$NF"$NF"$3"$3}'
test testffff$2$NFtest$3
12 123 2342 12312 12ffff$2$NF12312$32342
BEGIN
andEND
BEGIN/END 模式指定处理文本 之后/之前 需要执行的操作
duan@duan:~/awk_study$ cat test | awk 'BEGIN{print "bg"} {print $1} END{print "ed"}'
bg
test
12
ed
dua
- 分隔符
分为 输入分隔符 (FS, field separator; 即空格) 和 输出分隔符 (OFS, output field separator; 默认的输出分隔符为空格)
使用-F
指定输入分隔符,如:-F#
,-v FS='#'
使用-v OFS='----'
指定输出分隔符
awk '{print $1 $2}' 将$1 $2 连接输出
awk ‘{print $1,$2}’ 用OFS隔开