14.8.gawk的内建函数14.8.1. 字符串函数*sub函数匹配记录中最大、最靠左边的子字符串的正则表达式,并用替换字符串替换这些字符串。如果没有指定目标字符串就默认使用整个记录。替换只发生在第一次匹配的时候。格式如下:sub (regular expression_r, substitution string):sub (regular expression_r, substitution string, target string)实例:gawk.exe "{ sub(/test/, """mytest"""); print }" testfilegawk.exe "{ sub(/test/, """mytest"""); $1}; print }" testfile第一个例子在整个记录中匹配,替换只发生在第一次匹配发生的时候。如要在整个文件中进行匹配需要用到gsub第二个例子在整个记录的第一个域中进行匹配,替换只发生在第一次匹配发生的时候。*gsub函数作用如sub,但它在整个文档中进行匹配。格式如下:gsub (regular expression_r, substitution string)gsub (regular expression_r, substitution string, target string)实例:gawk.exe "{ gsub(/test/, """mytest"""); print }" testfilegawk.exe "{ gsub(/test/, """mytest"""), $1 }; print }" testfile第一个例子在整个文档中匹配test,匹配的都被替换成mytest。第二个例子在整个文档的第一个域中匹配,所有匹配的都被替换成mytest。*index函数返回子字符串第一次被匹配的位置,偏移量从位置1开始。格式如下:index(string, substring)实例:gawk.exe "{ print index("""test""",<wbr style=""><span style=""><span></span>"""mytest""") }" testfile</span><br style=""><span style="">实例返回test在mytest的位置,结果应该是3。</span><br style=""><span style="">*</span><br style=""><span style="">length函数返回记录的字符数。格式如下:</span><br style=""><span style="">length( string )</span><br style=""><span style="">length</span><br style=""><span style="">实例:</span><br style=""><span style="">gawk.exe "{ print length("""test""") }"</span><br style=""><span style="">gawk.exe "{ print length }" testfile</span><br style=""><span style="">第一个实例返回test字符串的长度。</span><br style=""><span style="">第二个实例返回testfile文件中第条记录的字符数。</span><br style=""><span style="">*</span><br style=""><span style="">substr函数返回从位置1开始的子字符串,如果指定长度超过实际长度,就返回整个字符串。格式如下:</span><br style=""><span style="">substr( string, starting position )</span><br style=""><span style="">substr( string, starting position, length of string )</span><br style=""><span style="">实例:</span><br style=""><span style="">gawk.exe "{ print substr( """hello world""", 7,11 ) }"</span><br style=""><span style="">上例截取了world子字符串。</span><br style=""><span style="">*</span><br style=""><span style="">match函数返回在字符串中正则表达式位置的索引,如果找不到指定的正则表达式则返回0。match函数会设置内建变量RSTART为字符串中子字符串的开始位置,RLENGTH为到子字符串末尾的字符个数。substr可利于这些变量来截取字符串。函数格式如下:</span><br style=""><span style="">match( string, regular expression_r )</span><br style=""><span style="">实例:</span><br style=""><span style="">gawk.exe "{start=match("""this is a test""",/[a-z]+$/); print start}"</span><br style=""><span style="">gawk.exe "{start=match("""this is a test""",/[a-z]+$/); print start, RSTART, RLENGTH }"</span><br style=""><span style="">第一个实例打印以连续小写字符结尾的开始位置,这里是11。</span><br style=""><span style="">第二个实例还打印RSTART和RLENGTH变量,这里是11(start),11(RSTART),4(RLENGTH)。</span><br style=""><span style="">*</span><br style=""><span style="">toupper和tolower函数可用于字符串大小间的转换,该功能只在gawk中有效。格式如下:</span><br style=""><span style="">toupper( string )</span><br style=""><span style="">tolower( string )</span><br style=""><span style="">实例:</span><br style=""><span style="">gawk.exe "{ print toupper("""test"""), tolower("""TEST""") }"</span><br style=""><span style="">*</span><br style=""><span style="">split函数可按给定的分隔符把字符串分割为一个数组。如果分隔符没提供,则按当前FS值进行分割。格式如下:</span><br style=""><span style="">split( string, array, field separator )</span><br style=""><span style="">split( string, array )</span><br style=""><span style="">实例:</span><br style=""><span style="">gawk.exe "{ split("""20:18:00""", time, """:""" ); print time[2] }"</span><br style=""><span style="">上例把时间按冒号分割到time数组内,并显示第二个数组元素18。</span><br style=""><span style="">14.8.2. 时间函数</span><br style=""><span style="">*</span><br style=""><span style="">systime函数返回从1970年1月1日开始到当前时间(不计闰年)的整秒数。格式如下:</span><br style=""><span style="">systime()</span><br style=""><span style="">实例:</span><br style=""><span style="">gawk.exe "{ now = systime(); print now }"</span><br style=""><span style="">*</span><br style=""><span style="">strftime函数使用C库中的strftime函数格式化时间。格式如下:</span><br style=""><span style="">systime( [format specification][,timestamp] )</span><br style=""><span style="">Table 3. 日期和时间格式说明符</span><br style=""><span style="">格式 描述</span><br style=""><span style="">%a 星期几的缩写(Sun)</span><br style=""><span style="">%A 星期几的完整写法(Sunday)</span><br style=""><span style="">%b 月名的缩写(Oct)</span><br style=""><span style="">%B 月名的完整写法(October)</span><br style=""><span style="">%c 本地日期和时间</span><br style=""><span style="">%d 十进制日期</span><br style=""><span style="">%D 日期 08/20/99</span><br style=""><span style="">%e 日期,如果只有一位会补上一个空格</span><br style=""><span style="">%H 用十进制表示24小时格式的小时</span><br style=""><span style="">%I 用十进制表示12小时格式的小时</span><br style=""><span style="">%j 从1月1日起一年中的第几天</span><br style=""><span style="">%m 十进制表示的月份</span><br style=""><span style="">%M 十进制表示的分钟</span><br style=""><span style="">%p 12小时表示法(AM/PM)</span><br style=""><span style="">%S 十进制表示的秒</span><br style=""><span style="">%U 十进制表示的一年中的第几个星期(星期天作为一个星期的开始)</span><br style=""><span style="">%w 十进制表示的星期几(星期天是0)</span><br style=""><span style="">%W 十进制表示的一年中的第几个星期(星期一作为一个星期的开始)</span><br style=""><span style="">%x 重新设置本地日期(08/20/99)</span><br style=""><span style="">%X 重新设置本地时间(12:00:00)</span><br style=""><span style="">%y 两位数字表示的年(99)</span><br style=""><span style="">%Y 当前月份</span><br style=""><span style="">%Z 时区(PDT)</span><br style=""><span style="">%% 百分号(%)</span><br style=""><span style="">实例:</span><br style=""><span style="">gawk.exe "{ now=strftime("""%D""", systime() ); print now }"</span><br style=""><span style="">gawk.exe "{ now=strftime("""%m/%d/%y"""); print now }"</span><br style=""><span style="">14.8.3. 内建数学函数</span><br style=""><span style="">Table 4.</span><br style=""><span style="">函数名称 返回值</span><br style=""><span style="">atan2(x,y) y,x范围内的余切</span><br style=""><span style="">cos(x) 余弦函数</span><br style=""><span style="">exp(x) 求幂</span><br style=""><span style="">int(x) 取整</span><br style=""><span style="">log(x) 自然对数</span><br style=""><span style="">rand() 随机数</span><br style=""><span style="">sin(x) 正弦</span><br style=""><span style="">sqrt(x) 平方根</span><br style=""><span style="">srand(x) x是rand()函数的种子</span><br style=""><span style="">int(x) 取整,过程没有舍入</span><br style=""><span style="">rand() 产生一个大于等于0而小于1的随机数</span><br style=""><span style="">14.8.4. 自定义函数</span><br style=""><span style="">在awk中还可自定义函数,格式如下:</span><br style=""><span style="">function name ( parameter, parameter, parameter, ... ) {</span><br style=""><span style="">statements</span><br style=""><span style="">return expression_r # the return statement and expression_r are optional</span><br style=""><span style="">}</span><br style=""><span style="">15. How-to</span><br style=""><span style="">*</span><br style=""><span style="">如何把一行竖排的数据转换成横排?</span><br style=""><span style="">gawk.exe "{printf("""%s,""",$1)}" filename</span>
</wbr>
分享到:
相关推荐
gawk 是 GNU 的 awk,具有很强的文本处理功能,简洁优美. awk 是一个程式语言,对于文本处理具有很强的功能。对於文字档里的资料做修改、比对、抽取等的处理,awk 能够以很短的程式 轻易地完成。 awk 能够依照使用...
在Windows环境下使用`GAWK version 4.2.1`,用户可以享受到与Unix/Linux系统相同的文本处理能力,这对于Windows开发者和系统管理员来说是一个非常有用的工具。 `awk`的基本原理是基于模式匹配和动作执行。它可以在...
然而,它同样可以在Windows系统上运行,通过提供的Windows版本——gawk for win,用户可以在Windows环境下享受其丰富的功能。Gawk是AWK编程语言的一个实现,由GNU项目开发,旨在处理和分析文本文件,提取有用的信息...
在Windows系统上,你可能需要通过命令提示符或者PowerShell来运行`gawk`命令,将`gawk-3.1.6-1-bin`添加到系统路径后,就可以像在Linux下一样方便地调用`gawk`了。 总的来说,`gawk-3.1.6-1-bin`为Windows用户提供...
Gawk: pattern scanning and processing language Version 3.1.6 Description Several kinds of tasks occur repeatedly when working with text files. You might want to extract certain lines and discard ...
在Cygwin环境下,gawk与Linux系统中的行为基本一致,但在处理路径和文件名时需要注意Windows和Unix风格的区别。 总的来说,《gawk使用手册》会涵盖以上所有内容,并提供实例来解释每个概念。通过深入学习,你将能够...
可以在windows系统中使用linux中的awk命令。具体使用方法请参照linux版本的awk使用方法。 可以在windows系统中使用linux中的awk命令。具体使用方法请参照linux版本的awk使用方法
本文将详细介绍如何在Windows上安装和使用Gawk 5.0.1版本,以及如何将Gawk集成到系统环境变量中。 首先,我们提到的"**gawk-5.0.1-w32.zip**"是一个专门为Windows系统编译的Gawk版本,版本号为5.0.1。这个压缩包...
gawk for windows 运行环境
1.GAWK:Effective AWK Programming_Edition 4.2.dvi 2.GAWK:Effective AWK Programming_Edition 4.2.html 3.GAWK:Effective AWK Programming_Edition 4.2.pdf 4.GAWK:Effective AWK Programming_Edition 4.2.txt
处理文本文件时,会重复出现多种任务。 您可能想要提取某些行并丢弃其余行。 或者,您可能需要在出现某些特定模式... 这意味着所有正确编写的 awk 程序都应该使用 gawk。 因此,我们通常不区分 gawk 和其他 awk 实现。
当在Windows上编译awk源码时,我们需要以下准备工作: 1. 获取awk源码:通常可以从GNU Awk (gawk)官方网站下载最新版本的源代码,例如`gawk-5.x.x.tar.gz`。 2. 安装编译环境:对于32位系统,你需要安装MinGW...
gawk for windows 运行环境
其中,gawk-3.1.6-1是GNU Awk的版本,这是一个文本处理工具,经常与GMT结合使用,帮助解析和操作GMT生成的地图配置文件或数据文件。gs921w64可能是指Ghostscript的9.21版Windows 64位版本,它是GMT用来处理Post...
GAWK 是 GNU 项目对 AWK 的开源实现,支持多种操作系统,包括 UNIX、Mac OS X 和 Windows。由于其兼容 POSIX 标准,GAWK 可以在不同平台上提供一致的行为。 在 GAWK 中,程序通常是数据驱动的,通过模式匹配和操作...
总结一下,GAWK 5.1.0 for Windows是一个强大而易用的文本处理工具,适用于批处理任务,通过提供的lib、share、bin和include目录,用户可以在Windows环境下便捷地使用和扩展其功能。无论你是初学者还是经验丰富的...
GAWK是GNU项目对AWK语言的开源实现,兼容1992年的POSIX标准,因此它可以在各种操作系统上运行,包括UNIX、Mac OS X和Windows。GAWK不仅支持原始AWK和NAWK的特性,还不断更新以增加新功能。这意味着你可以在不同平台...
GNU AWK (GAWK) 是开源的AWK实现,适用于所有UNIX系统,同时也在其他操作系统如Mac OS X和Microsoft Windows上可用。GAWK不仅包含了原始AWK的功能,还引入了NAWK(New AWK)的增强特性,如新的内置函数、变量、特殊...
这里提到的"windows下的uniq"实际上可能是指一个名为UNIQUE.exe的程序,它用于处理数据,去除重复行,与Gawk(GNU Awk)配合工作,提供数据分析中的去重能力。 `uniq`命令在Unix/Linux中是一个非常常见的文本处理...
1. **跨平台**:GAWK可以在各种主要的UNIX平台和其他操作系统上运行,包括Windows和Mac OS X。 2. **POSIX兼容**:GAWK遵循POSIX标准,确保了其在不同系统上的一致性。 3. **无内存限制**:GAWK没有预定义的内存限制...