awk 学习总结-变量/分隔符
1 awk 语法
awk [options] 'Pattern{Action}' file
2 awk 模式
Pattern
FS :field separator
OFS:output field separator
awk [options] 'Pattern{Action}' file
- awk 对文件处理方式为逐行扫描处理
- 举例:awk '{print "用户名:" $1,$3}' /etc/passwd 变量用逗号隔开
- $0为全行,NF为被分隔符分割的数量,$NF为最后一行,$NF-1为倒数第二行,以此类推。
2 awk 模式
Pattern
- 特殊模式 awk 'BEGIN{print "aaaa","bbbb"}' file #在处理file之前提前打印指定内容。awk 'END{print "aaaa","bbbb"}' file #在处理file之后打印指定内容
FS :field separator
OFS:output field separator
- 默认输入/输出分隔符为空格,即awk以空格为准对每一行进行分割。
- 设置输入分隔符有两种方式,-F='#' -v FS='#'
- 变量间有逗号,输出时以空格分隔。
变量使用前需要加参数 -v
- FS OFS,输入输出
- NR 行号,当前文本处理的行号
- FNR ,处理多个文件时分别显示行号
- RS ,输入行分隔符,默认是指定回车而换行, -v RS=" ",指定遇空格换行,换而言之,指定了空格为换行符。
- ORS , 输出行分隔符,需要换行则输出回车,-v ORS="***",需要换行时则输出***,替代了之前的回车。
- ARGC与ARGV ,数组变量,ARGV[0]代表awk,ARGV[1]代表文件1,ARGV[2]代表文件2,以此类推。ARGC代表数组的参数数量,即ARGV的长度。
- 自定义变量,(1)awk -v myvar="23w" 'BEGIN{print myvar}' 输出23w (2)awk 'BEGIN{myvar="23w";print myvar}' 输出23w 两种定义方式。第一种可以引用shell中的变量。var=123 换行 awk -v myvar=$var 'BEGIN {print myvar}' 输出 123
评论
发表评论