AWK
1. grep 更适合单纯的查找或文本匹配
2.sed 更适合编辑匹配到的文本
3. awk 更适合格式化文本,对文本进行较复杂格式处理
4. awk 最常用的动作 print printf
$0 表示整行 NF 表示该列被分割成几列字段,倒数第二列 $(NF-1) $NF 表示当前分割后最后一列
5. awk 2中特殊处理模式 : BEGIN END
BEGIN : 指定可处理文本前需要执行的操作
END : 指定处理完所有行需要执行的动作
6. 内置变量
输入分隔符 field separator FS
输出分隔符 output field separator OFS
awk -F# '{print $1 $2}' test
awk -v FS='#' '{print $1 $2}' test
awk -v OFS="+++" '{print $1,$2}' test
输入换行符 RS
输出换行符 ORS
当前行字段个数 NF
当前处理文本行号 NR 多文件时,会按文件顺序 行号递增
各个文件分别计数行号 FNR 多文件时,会按各自文件 行号显示
档期文件名 FILENAME
命令行参数格式 ARGC
参数数组 ARGV
awk 'BEGIN{print argv[0],argv[1],argv[2])' test1 test2 // nawk 未实现,不知道原因
自定义变量 awk 'BEGIN{aa="111";print "123",aa}' tt.txt
awk -v TT="123" 'BEGIN{print "123",TT}' tt.txt // 也未实现 ,不知道原因
awk -v FS="#" '{printf "第一列: %s\t 第二列: %s \n",$1,$2}' test
awk 负责文本切割 printf 负责格式化输出
awk '/^123/{print $0}' 1.txt
awk '{if (NR > 1 && NR <4 ){print $0}}' 1.txt
awk '{if(NR == 1 ){print $2,$3} else if(NR ==2){print $1}else {print $0}}' 1.txt