`
chinamming
  • 浏览: 151190 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Windows上GAWK的使用(五)

 
阅读更多
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 }" testfile
gawk.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 }" testfile
gawk.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>
分享到:
评论

相关推荐

    GawkforWindows4.1forWindows附Gawk使用方法

    gawk 是 GNU 的 awk,具有很强的文本处理功能,简洁优美. awk 是一个程式语言,对于文本处理具有很强的功能。对於文字档里的资料做修改、比对、抽取等的处理,awk 能够以很短的程式 轻易地完成。 awk 能够依照使用...

    windows环境下GAWK version-4.2.1

    在Windows环境下使用`GAWK version 4.2.1`,用户可以享受到与Unix/Linux系统相同的文本处理能力,这对于Windows开发者和系统管理员来说是一个非常有用的工具。 `awk`的基本原理是基于模式匹配和动作执行。它可以在...

    gawk windows版本的gawk 一个功能强大的文本编辑器

    然而,它同样可以在Windows系统上运行,通过提供的Windows版本——gawk for win,用户可以在Windows环境下享受其丰富的功能。Gawk是AWK编程语言的一个实现,由GNU项目开发,旨在处理和分析文本文件,提取有用的信息...

    gawk-3.1.6-1-bin windows最新版

    在Windows系统上,你可能需要通过命令提示符或者PowerShell来运行`gawk`命令,将`gawk-3.1.6-1-bin`添加到系统路径后,就可以像在Linux下一样方便地调用`gawk`了。 总的来说,`gawk-3.1.6-1-bin`为Windows用户提供...

    Gawk for Windows 3.1.6-1

    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 ...

    gawk使用手册

    在Cygwin环境下,gawk与Linux系统中的行为基本一致,但在处理路径和文件名时需要注意Windows和Unix风格的区别。 总的来说,《gawk使用手册》会涵盖以上所有内容,并提供实例来解释每个概念。通过深入学习,你将能够...

    gawk 3.1.6-1 windows中的awk

    可以在windows系统中使用linux中的awk命令。具体使用方法请参照linux版本的awk使用方法。 可以在windows系统中使用linux中的awk命令。具体使用方法请参照linux版本的awk使用方法

    gawk-5.0.1-w32.zip

    本文将详细介绍如何在Windows上安装和使用Gawk 5.0.1版本,以及如何将Gawk集成到系统环境变量中。 首先,我们提到的"**gawk-5.0.1-w32.zip**"是一个专门为Windows系统编译的Gawk版本,版本号为5.0.1。这个压缩包...

    gawk_4.1.zip

    gawk for windows 运行环境

    GAWK:Effective AWK Programming Edition 4.2

    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

    Gawk for Windows:适用于 Windows 32 位的 GNU Awk 4.0.0-开源

    处理文本文件时,会重复出现多种任务。 您可能想要提取某些行并丢弃其余行。 或者,您可能需要在出现某些特定模式... 这意味着所有正确编写的 awk 程序都应该使用 gawk。 因此,我们通常不区分 gawk 和其他 awk 实现。

    awk源码及windows下64位和32位编译说明

    当在Windows上编译awk源码时,我们需要以下准备工作: 1. 获取awk源码:通常可以从GNU Awk (gawk)官方网站下载最新版本的源代码,例如`gawk-5.x.x.tar.gz`。 2. 安装编译环境:对于32位系统,你需要安装MinGW...

    gawk_5.1.zip

    gawk for windows 运行环境

    gmt安装包(gmt 6.0.0-win64;gawk-3.1.6-1;gs921w64;gsv50w64)

    其中,gawk-3.1.6-1是GNU Awk的版本,这是一个文本处理工具,经常与GMT结合使用,帮助解析和操作GMT生成的地图配置文件或数据文件。gs921w64可能是指Ghostscript的9.21版Windows 64位版本,它是GMT用来处理Post...

    GAWK入门.doc

    GAWK 是 GNU 项目对 AWK 的开源实现,支持多种操作系统,包括 UNIX、Mac OS X 和 Windows。由于其兼容 POSIX 标准,GAWK 可以在不同平台上提供一致的行为。 在 GAWK 中,程序通常是数据驱动的,通过模式匹配和操作...

    gawk-5.1.0-w32-bin.zip

    总结一下,GAWK 5.1.0 for Windows是一个强大而易用的文本处理工具,适用于批处理任务,通过提供的lib、share、bin和include目录,用户可以在Windows环境下便捷地使用和扩展其功能。无论你是初学者还是经验丰富的...

    GAWK入门.pdf

    GAWK是GNU项目对AWK语言的开源实现,兼容1992年的POSIX标准,因此它可以在各种操作系统上运行,包括UNIX、Mac OS X和Windows。GAWK不仅支持原始AWK和NAWK的特性,还不断更新以增加新功能。这意味着你可以在不同平台...

    GAWK入门.docx

    GNU AWK (GAWK) 是开源的AWK实现,适用于所有UNIX系统,同时也在其他操作系统如Mac OS X和Microsoft Windows上可用。GAWK不仅包含了原始AWK的功能,还引入了NAWK(New AWK)的增强特性,如新的内置函数、变量、特殊...

    windows下的uniq

    这里提到的"windows下的uniq"实际上可能是指一个名为UNIQUE.exe的程序,它用于处理数据,去除重复行,与Gawk(GNU Awk)配合工作,提供数据分析中的去重能力。 `uniq`命令在Unix/Linux中是一个非常常见的文本处理...

    GAWK入门[参照].pdf

    1. **跨平台**:GAWK可以在各种主要的UNIX平台和其他操作系统上运行,包括Windows和Mac OS X。 2. **POSIX兼容**:GAWK遵循POSIX标准,确保了其在不同系统上的一致性。 3. **无内存限制**:GAWK没有预定义的内存限制...

Global site tag (gtag.js) - Google Analytics