awk:报告生成器(不修改文本)
行:record
列:field
NR:number of record //行数
NF:number of field //列数
**注:**列与列之间以空格为分隔符
例子1;
打印文档第一列:
awk '{print $1}' access_log
例子2:
awk '{print $NF}' access_log
打印最后一列:
例子3:
打印最后一列得到的值减一后的值
awk '{print $NF-1}' access_log
例子4;
打印倒数第二列
awk '{print $(NF-1)}' access_log
例子5:列对齐:
awk '{print $1"\t" $2"\t"$3}' one.txt
awk '{print $1 $2 $3}' one.txt
注:直接连接
awk '{print $1,$2,$3}' one.txt
注:以一个空格分隔
参数F后指明分隔符;
例子6:
显示行数:
awk '{print NR "\t" $0}' one.txt
注:行的计数,$0:所有列
awk默认,把空格当做字符拼接符,逗号则是默认分隔符(空格)
显示列数:
注:打印每一行中的列数
例子7:
显示2012年入职的员工
只打印每行的列数;
只打印每行的行数:
只打印第3行:
只打印列数为4的行
例子8:
如何后面不指明文件名,awk会等待输入:
例子9:
awk ‘BEGIN{FS=","}{prnt $1}'
注:BEGIN表示全局变量,FS表示当前分隔符
awk默认的输入分隔符和输出分隔符分别定义的
awk 'BEGIN{FS="2"}{print $1}' one.txt
解释:FS表示输入分隔符,
解释:OFS表示输出分隔符。
注:如果要使用指定分隔符,后面一定要加逗号。
例子9:
1)
awk '{print NR,$0}' one.txt two.txt
会把two.txt的内容追加到one.txt下方显示。
2)
FILENAME:为文件名。
3)
重定向到另外一个文件中。
4)
awk '{print NR,"\t",FILENAME,"\t",$0}' one.txt two.txt
awk 'BEGIN{OFS="**"}{print NR,"\t",FILENAME,"\t",$0}' one.txt two.txt
例子10
1)
隐藏某列内容:
awk '{$1="";print $0}' one.txt
例子11:
<与<<的区别
例子12:
1)awk做计算
awk会等待输入,因为没有输入,所以直接回车,awk会出计算结果
按ctrl+c结束。
2)awk计算时包含字符