awk是个优秀文本处理工具,可以说是一门程序设计语言。下面是awk内置变量。
一、内置变量表
属性 说明
内置变量表
$0 |
当前记录(作为单个变量) |
$1~$n |
当前记录的第n个字段,字段间由FS分隔 |
FS |
输入字段分隔符 默认是空格 |
NF |
当前记录中的字段个数,就是有多少列 |
NR |
已经读出的记录数,就是行号,从1开始 |
RS |
输入的记录他隔符默 认为换行符 |
OFS |
输出字段分隔符 默认也是空格 |
ORS |
输出的记录分隔符,默认为换行符 |
ARGC |
命令行参数个数 |
ARGV |
命令行参数数组
|
FILENAME |
当前输入文件的名字 |
IGNORECASE |
如果为真,则进行忽略大小写的匹配 |
ARGIND |
当前被处理文件的ARGV标志符 |
CONVFMT |
数字转换格式 %.6g |
ENVIRON |
UNIX环境变量 |
ERRNO |
UNIX系统错误消息 |
FIELDWIDTHS |
输入字段宽度的空白分隔字符串 |
FNR |
当前记录数 |
OFMT |
数字的输出格式 %.6g |
RSTART |
被匹配函数匹配的字符串首 |
RLENGTH |
被匹配函数匹配的字符串长度 |
SUBSEP |
\034 |
6、输入参数获取(ARGC ,ARGV使用)
[chengmo@localhost ~]$ awk 'BEGIN{FS=":";print "ARGC="ARGC;for(k in ARGV) {print k"="ARGV[k]; }}' /etc/passwd
ARGC=2
0=awk
1=/etc/passwd
ARGC得到所有输入参数个数,ARGV获得输入参数内容,是一个数组。
7、获得传入的文件名(FILENAME使用)
[chengmo@localhost ~]$ awk 'BEGIN{FS=":";print FILENAME}{print FILENAME}' /etc/passwd
/etc/passwd
FILENAME,$0-$N,NF 不能使用在BEGIN中,BEGIN中不能获得任何与文件记录操作的变量。
8、获得linux环境变量(ENVIRON使用)
[chengmo@localhost ~]$ awk 'BEGIN{print ENVIRON["PATH"];}' /etc/passwd
/usr/lib/qt-3.3/bin:/usr/kerberos/bin:/usr/lib/ccache:/usr/lib/icecc/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/java/jdk1.5.0_17/bin:/usr/java/jdk1.5.0_17/jre/bin:/usr/local/mysql/bin:/home/web97/bin
ENVIRON是子典型数组,可以通过对应键值获得它的值。
9、输出数据格式设置:(OFMT使用)
[chengmo@localhost ~]$ awk 'BEGIN{OFMT="%.3f";print 2/3,123.11111111;}' /etc/passwd
0.667 123.111
OFMT默认输出格式是:%.6g 保留六位小数,这里修改OFMT会修改默认数据输出格式。
10、按宽度指定分隔符(FIELDWIDTHS使用)
[chengmo@localhost ~]$ echo 20100117054932 | awk 'BEGIN{FIELDWIDTHS="4 2 2 2 2 3"}{print $1"-"$2"-"$3,$4":"$5":"$6}'
2010-01-17 05:49:32
FIELDWIDTHS其格式为空格分隔的一串数字,用以对记录进行域的分隔,FIELDWIDTHS="4 2 2 2 2 2"就表示$1宽度是4,$2是2,$3是2 .... 。这个时候会忽略:FS分隔符。
11、RSTART RLENGTH使用
[chengmo@localhost ~]$ awk 'BEGIN{start=match("this is a test",/[a-z]+$/); print start, RSTART, RLENGTH }'
11 11 4
[chengmo@localhost ~]$ awk 'BEGIN{start=match("this is a test",/^[a-z]+$/); print start, RSTART, RLENGTH }'
0 0 –1
RSTART 被匹配正则表达式首位置,RLENGTH 匹配字符长度,没有找到为-1.
#! /usr/bin/awk -f
# player aop analyse script
# author:limingjie
# date:2011/12/07
{
BEGIN{FSsplit("1 11 201 25 200",aopIdArr," ");
split("10000 11000",srcIdArr," ");
}
{
for(srcId in srcIdArr){
if(srcIdArr[srcId]==$8){
for(aopId in aopIdArr){
if(aopIdArr[aopId]==$4){
# print "##################################"
result[srcId"_"aopId]+=1 ;
}
}
}
}
}
END{
for(srcId in srcIdArr){
for(aopId in aopIdArr){
print FILENAME":"srcIdArr[srcId]"_"aopIdArr[aopId]"="result[srcId"_"aopId];
}
}
}
参考链接:http://blah.blogsome.com/category/awk/#g_t_00bc_00c6_00cb_00e3_00d7_00dc_00ba_00cd_00b5_00c4_00bd_00c5_00b1_00be
分享到:
相关推荐
awk内置函数还包括对字符串进行操作的功能,例如 substr、split、sub和gsub函数,分别用于获取子字符串、分割字符串到数组、字符串替换等。 使用awk时,模式匹配是一个非常重要的功能。模式可以是字符串或者正则...
内置变量包括 NR、NF、FS、RS 等,它们分别表示记录号、字段数、字段分隔符和记录分隔符。用户定义变量可以使用赋值语句来定义。 awk 的函数 awk 有多种函数,包括数学函数、字符串函数、时间函数等。数学函数包括...
awk的内置变量是其灵活性的关键组成部分,这些变量提供了对输入和输出的控制,以及对处理过程的元信息的访问。以下是对标题和描述中提到的`awk`内置变量的详细解释: 1. **$0**:这个变量代表当前记录,即每一行的...
- **内置函数库**:AWK提供了一系列内置函数,用于处理数学运算、字符串操作等。 - **常见函数**:如`sqrt()`用于计算平方根,`toupper()`用于转换字符串为大写等。 #### 十五、内置变量 - **内置变量**:AWK定义...
- **awk内置变量**:如`FS`(字段分隔符)、`OFS`(输出字段分隔符)等。 - **awk的内置函数**:如`tolower()`(转换为小写)、`toupper()`(转换为大写)等。 通过以上介绍,我们可以看出awk不仅仅是一个简单的...
**awk的内置函数**:AWK提供了许多内置函数,如`length()`用于获取字符串长度,`split()`用于分割字符串,`print()`和`printf()`用于输出,以及数学运算函数如`sqrt()`平方根,`int()`向下取整等。 **在命令行使用...
内容包括通用的程序结构、使用awk内置函数、编写用户定义函数、awk程序的调试技术等。 **awk编程的高级应用** 书中还涉及了如何开发处理索引的应用程序,以此来演示awk的强大功能。此外,还包括了如何获取不同awk...
而内置函数如length()、substr()、split()等,进一步增强了awk的功能。 在命令行使用awk时,可以利用BEGIN和END规则进行预处理和后处理,它们在处理任何输入之前和之后执行,不依赖于输入数据。此外,awk支持多种...
- **字段**: Awk通过内置变量$0、$1、$2等来引用当前记录中的字段。 ### 4. 字段和记录的处理 - **字段分隔符**: Awk使用内置变量FS(Field Separator)来确定字段的分隔符,默认为空格和制表符。 - **记录分隔符*...
awk内置函数包括字符串处理函数和数值处理函数等。例如,gsub函数用于全局替换字符串中的匹配模式。在实例中,代码`awk 'gsub(/6\./, "78") {print $0}' data.f`使用gsub函数将data.f文件中所有出现的"6."替换为"78...
AWK提供了一系列内置函数,例如`length()`用于计算字符串长度,`split()`用于分割字符串,`printf()`用于格式化输出等。 **一.6 命令行使用AWK** 在命令行中,可以将AWK脚本直接作为参数传递,或者使用`-f`选项指定...
AWK的语法简洁,提供了丰富的内置函数和灵活的数据处理能力,使得它成为数据处理领域中的一个利器。AWK也能够与其他程序交互,进一步拓展了其应用范围。对于任何需要处理文本数据的用户,AWK都值得学习和掌握。
- **内置函数**:提供了丰富的内置函数,如 `length()`, `sqrt()`, `toupper()` 等。 - **变量、表达式和赋值**:支持变量定义、数学运算等。 - **字段变量**:`NF` 代表当前记录的字段数量。 - **字符串连接**:...
- **内置函数**: 包括算术函数(如`+`、`-`、`*`、`/`)、字符串函数(如`length`、`index`、`substr`)和控制流程函数(如`if`、`for`、`while`)等。 - **表达式**: 用于计算或判断,结果可以影响操作的执行。 ...
#### 四、awk内置变量 awk提供了一系列内置变量,用于简化数据处理任务: - `$n`:当前行的第n个字段,其中字段由FS变量指定的分隔符分割。 - `$0`:当前行的完整内容。 - `ARGC`:命令行参数的个数。 - `ARGIND`...
`awk`的动作可以包括打印(`print`)、重定向(`printf`)、条件判断(`if...else`)、循环(`for`、`while`)以及内置函数,如计算平均值(`awk '{sum+=$1} END{print sum/NR}'`)。 **6. 行内模式匹配** 除了匹配...
3. **动作与函数**:介绍AWK中的内置动作和函数,例如`print`、`printf`、`next`和`exit`等,以及如何自定义函数以提高代码复用性。这些函数涵盖了字符串操作、数学计算和数组处理等多个方面。 4. **输入/输出处理*...
- **内建函数**:AWK提供了多种内置函数,如`length()`计算字符串长度,`split()`分割字符串等。 7. **实战案例** - **案例1**:统计输入文件中单词的数量,可以使用`gawk '{count++} END{print count}' file`。 ...
awk还具备大量的内置函数,这些函数可以分为数值函数、字符串函数和系统函数三类。数值函数包括了三角函数、指数、对数和平方根等。字符串函数有用于长度计算、索引查找、子字符串操作、字符串分割等,nawk和gawk...
本文档将深入分析 awk 的使用和实现机制,探讨 awk 的内置变量、指令和函数,并通过实践示例加深理解。 awk 的内置变量 awk 提供了多种内置变量,用于存储和处理数据。这些变量包括: * ARGC:命令行参数个数 * ...