
awk是一种语言,当之无愧! awk除了简单的文本处理功能外,awk还具有计算机语言特有的属性,例如变量,判断,循环甚至数组.
简单功能:
awk处理文本时,它将文本分为一条记录. Awk允许匹配记录(常规)匹配记录;每个记录包含多个字段,awk可以修改字段分隔符以灵活地分隔字段. 它提供($ 0,$ 1 ...)对各个字段的访问.
awk通常用于处理字段. 所谓字段是在文本文件中,每一行分为许多列,并且各列由特定字符分隔.
awk命令分为三个部分: awk本身,awk要执行的命令的内容以及awk的输入文件.
awk执行命令时,它将依次读取每一行并将命令应用于每一行.
-print和print $ 0的行为完全相同awk 数组初始化,都打印整行!
The
-F参数设置awk的初始化变量FS. FS控制awk的字段分隔符. 默认情况下,它是一个空白字符.
awk支持设置多个字段分隔符,即使使用正则表达式也是如此.
例如awk -F“ [\ t] +” //表示此分隔符与一个或多个制表符或空格匹配
awk读取标准输入.
AWK代码结构:
Awk默认为每个输入行执行一个代码块.

awk的操作可以分为三个部分: 输入之前处理初始化(BEGIN {}代码块),处理输入过程({}代码块集)和所有输入之后的工作(END {}代码块) ).
BEGIN代码块,主要完成一些awk参数的初始化操作!
核心处理输入的过程: 执行机构
END代码块是awk仅在处理完所有输入后才运行的代码!
-BEGIN代码块
格式: 带有{}的BEGIN标签.
在此代码块中,一些变量已初始化,并且在初始化期间仅运行一次.
awk将FS变量定义为字段分隔符. 命令行上的-F参数用于指定字段分隔符,该分隔符写在BEGIN代码段中:
fs.awk // awk脚本,-f参数引用awk命令中的脚本
BEGIN {FS =“: ” //为FS变量分配一个冒号并更改字段分隔符} {print“ USER: ” $ 1“ \ tSHELL: ” $ 7}

head -n10 / etc / passwd | awk -f fs.awk

您也可以直接在命令行上初始化

awk'BEGIN {FS =“: ”} {打印“ USER: ” $ 1“ \ tSHELL: ” $ 7}'

-F和FS可以更改字段分隔符,当awk脚本更复杂时,FS适用.
-END代码块:
格式: END {}
所有输入处理完成后执行!只需执行一次!
在END代码块中,awk脚本可以执行一些类似于统计数据和打印输出的操作.
search.awk
BEGIN {#初始化信息,易于阅读,打印“使用nologin多少个?”}} / nologin / {++ adder}#核心awk处理过程END {#完成工作,打印结果打印“出现'nologin'”加法器“时间”. }

awk -f search.awk / etc / passwd

-Awk模式匹配
对于BEGIN和END之间的第二部分的核心处理,仅处理匹配的数据!

语法:
/正则表达式/ {匹配后的操作}
Awk首先使用正则表达式匹配数据记录,如果匹配,它将在{}中执行以下操作.
awk'/ ^ $ / {print“这是空行. ”}'/ etc / inittab#匹配空行并执行一次输出

shell_recorder.wak
awk -f shell_recorder.awk / etc / passwd

有两种类型: 用户定义变量和内置变量
与大多数脚本语言一样,
-Awk在使用变量之前不需要声明. 首次使用Awk时会自动创建变量.
-awk变量的初始值在创建时为空字符串,但是当需要数字值时,它将被视为0. 也就是说,awk会自动将字符串转换为数字值以进行计算
这时,awk的行为类似于shell脚本. 大多数脚本的行为如下: 变量值存储字符串,并在需要时将其转换为其他类型.
命名规则:

Awk变量名称必须以ASCII字母或下划线开头,然后可以选择连接字母,数字和下划线.
-如果使用正则表达式匹配变量名,则awk变量名必须匹配[A-Za-z _] [A-Za-z_0-9] *
名称建议: 小写的局部变量,大写全局变量的首字母,并大写所有内置变量
awk的内置变量
F字段,R记录字段S记录符号N编号
变量
说明
文件名
当前输入文件的名称
FNR
当前输入文件中的记录数
工作中的记录数(行数)
记录的字段数(列数)
字段分隔符(常规支持)awk 数组初始化,默认空格
输出字段分隔符
输入记录分隔符,默认换行符
输出记录分隔符
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-163733-1.html
中国俗语"关门打狗"
南方黑芝麻糊