锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

Linux常用技能之awk

时间:2023-01-06 10:00:00 电容柜akw

awk基础概念

awk脚本的过程控制分为三部分:

  • 输入数据前例程BEGIN{}
  • 主输入循环{}
  • 读完所有文件的例程END{}

awk内建变量:

  1. 每行内容记录称为记录,英文名称 Record
  2. 每行通过分隔符分隔的每一列称为字段和英文名称 Field

在澄清了这些概念之后,我们将总结几个重要的内置变量:
NR:表示当前行数;
NF:表示当前列数;
RS:行分隔符,默认为换行;
FS:列分隔符,默认为空格和制表符;
OFS:打印时用于分割字段的输出列分隔符默认为空格
ORS:打印时用于分割记录的输出行分隔符默认为换行符

$0 和$1 是awk当我们想输出所有内容(默认为一行)时,内置变量会被使用$0;如果只想输出第一个字段,可以使用$1。

awk实战

已经stat.txt的内容如下:
在这里插入图片描述

#输出第二列和第三列信息: awk '{print $2,$3}' stat.txt  #输出第二列和第三列信息,不包括第一行 awk '{if(NR>1) print $2,$3}' stat.txt  #统计每行数字总数: awk '{sum=0;for(i=3;i<=NF;i ) sum =$i;print sum}' stat.txt  #统计每行总数,不包括第一行: #做法一: awk '{if(NR>1) {sum=0;for(i=3;i<=NF;i ) sum =$i;print sum} }' stat.txt #做法二: sed -n '2,$p' stat.txt | awk '{sum=0; for(i=3;i<=NF;i ) sum =$i;print sum}'  #统计所有行加起来的总数,END是遍历所有行后执行的操作: awk '{for(i=3;i<=NF;i ) sum =$i} END {print sum}' stat.txt  #将awk将句子写入文件中test1.awk,通过awk -f调用文件执行awk语句: sed -n '2,$p' stat.txt | awk -f test1.awk  #awk数组运用 awk '{a[$2]=$NF} END {for(i in a) print i,a[i]}' stat.txt #其实上面这个只是打印第二列和最后一列,相当于 awk '{print $2,$NF}' stat.txt 

awk进阶使用

awk指定输出分隔符

##指定输出列的间隔符 awk 'BEGIN{OFS="||"} {print $2,$NF}' stat.txt #执行列的分隔符和输出后的间隔符 head -5 /etc/passwd | awk 'BEGIN{FS=":";OFS="||"} {print $1,$NF}'  


awk格式输出:printf

#awk格式输出:printf ll -S | head -5 | awk '{printf("%.2f%s\n",$5/1024,"KB")}'  #ll -S表示按文件大小倒序排序。 #%.2f说保留两位小数,%f默认保留6位小数。 #\n表示换行。 

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章