欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

三剑客之 awk

程序员文章站 2022-05-10 08:31:14
...

命令概述

awk	---	pattern scanning and processing language
模式扫描(处理文件每一行信息) 过程语言(一门脚本语言 逻辑语句(循环/判断))

作用说明(对文件逐行的读入)

1)擅长对文件列进行操作
2)擅长统计分析数据信息

命令语法结构

awk [参数] '模式{动作信息}'  文件信息

注:
  注意大小写

高级用法

1)awk模式概念
	普通模式
		利用正则进行匹配/利用行号进行匹配/利用字符进行匹配

	特殊模式:  
		1)BEGIN用法
			1.在处理文件之前先做的事情 (准备工作)
			2.将awk作为计算机使用
			3.进行变量设定

		2)END用法
			1.在处理文件之后要做的事情 (后续工作)
			2.输出结果信息

		3)统计分析日志公式信息

		内置变量
			NR	--- 表示行号
			NF	--- 表示字段信息(最后一列)
			FS	--- 表示分隔符字段信息

普通用法

根据内容
awk '/内容/{print $列数}' 文件名称

三剑客之 awk

根据行号
awk 'NR==行数 {print $列数}' 文件名称

	$0			--- 全列
	$n 			--- 第n列
	$x,$y		--- '逗号'表示第x列到第y列之间有'空格'
	$x"空格"$y	---  '双引号'表示第x列到第y列之间有'空格'

三剑客之 awk

根据第n列某个信息取出
awk '$n~/信息/{print $列数}' 文件名称

注:
  $n!~ — 表示第n列查找出来的信息进行取反

三剑客之 awk

指定某个或多个符号为分隔符进行分列
awk -F '[符号1符号2]+' '{print $列数}' 文件信息

注:
  利用-F指定列分隔符, 结合正则可以识别多个分隔符号

三剑客之 awk

对查找出来的信息进行替换
awk '$n~/信息/{gsub(/替换的信息/,"要替换成什么",$n);print $列数}' 文件名称

注:
  gsub(/替换的信息/,“要替换成什么”,$n替换的第几列信息)

三剑客之 awk

高级用法

1)BEGIN用法

1.在处理文件之前先做的事情
awk 'BEGIN{print "姓","名","id","金额"}{print $n}' 文件信息 |column -t 

三剑客之 awk

2.将awk作为计算机使用
awk 'BEGIN{print 数值计算}'

三剑客之 awk

3.进行变量设定
		# awk 'BEGIN{old="oldboy";print old}' 
			oldboy
		# awk   'BEGIN{FS=":"}{print $2}' test12.txt 
			02
		# awk -vFS=":"  '{print $2}' test12.txt 
			02

2)END用法

1.输出结果信息
		# awk 'END{print "老男孩员工捐款记录表"}{print $0}' awk.txt|column -t
			Zhang	Dandan  	41117397  		:250:100:175
			Zhang	Xiaoyu  	390320151 		:155:90:201
			Meng 	Feixue  	80042789  		:250:60:50
			Wu   	Waiwai  	70271111  		:250:80:75    Xiaoai
			Liu  	Bingbing	41117483  		:250:100:175
			Wang 	Xiaoai  	3515064655		:50:95:135
			Zi   	Gege    	1986787350		:250:168:200
			Li   	Youjiu  	918391635 		:175:75:300
			Lao  	Nanhai  	918391635 		:250:100:175
			老男孩员工捐款记录表

3)统计分析日志公式信息

	awk '/日志内容/{i=i+1;print i}' 文件名称

三剑客之 awk

相关标签: Linux 基础