9.文本格式化awk

一、awk 报告生成器,格式化文本输出
1.用法:awk [options] 'program' FILE ... 语句之间用分号分隔
2.常用选项:
-F:指明输入时用到的字段分隔符;
-v var=value:自定义变量

二、awk常用用法
1.print 使用方式为 print item1,item2
tail -3 /etc/fstab |awk '{print "hello",$1,$4,6}'
2.变量
内建变量
1)FS:input field seperator(输入字段分隔符),即我们以哪个字段做分隔符,默认为空白字符
awk -v FS=':' '{print $1}' /etc/passwd | tail -2
awk -F ':' '{print $1}' /etc/passwd | tail -2
2)OFS:output field seperator(输出字段分隔符),即输出的字段用什么分隔,默认为空白字符
awk -v FS=':' -v OFS='#' '{print $1,$2,$3}' /etc/passwd|tail -2
3)RS:input record seperator,输入的换行符。现在我们把空格作为换行符,即某一行中有空白的话空白后就作为新行出现
awk -v RS=' ' '{print $1}' /etc/passwd
4)ORS:output record seperator,输出时的换行符
awk -v ORS='#' '{print $1}' /etc/passwd
5)NF:number of field:字段数量,自动保存在一个叫NF的内建变量中。比如我们现在要打印最后四行的字段数量
打印最后一行的字段,可以使用$NF awk -v FS=':' '{print $NF}' /etc/passwd | tail -4
6)NR:number of record,行数;即可以显示文件有多少行
awk '{print NR}' /etc/passwd
7)FNR:file number of record,各文件分别计数。如果用NR变量后面跟多个文件名则会统一计数,即所有行号一起统计,
如果用FNR变量后面跟多个文件则第一个文件行号统计完了又开始统计第二个文件的行号
awk '{print FNR}' /etc/fstab /etc/issue
8) FILENAME:当前正在处理的文件的文件名,如果我们有多行的话那么每一个行都会显示一次文件名
awk '{print FILENAME}' /etc/issue
9)ARGC:命令行参数的个数
awk '{print ARGC}' /etc/issue /etc/fstab
10)ARGV:数组,保存的是命令行所给定的各参数
awk 'BEGIN {print ARGV[0]}' /etc/issue /etc/fstab
自定义变量(如果不对文件做处理直接使用BEGIN模式即可)
1)-v var=value 变量名区分字符大小写。
awk -v test='hello gawk' 'BEGIN {print test}'
2)在program中直接定义
awk 'BEGIN {test="hello gawk";print test}'

posted @ 2022-08-09 17:22  以后的开始  阅读(98)  评论(0)    收藏  举报