`
chinamming
  • 浏览: 141607 次
  • 性别: 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环境下使用的awk,最新版本4.2.1。 解压zip文件,把解压后文件夹下面的bin目录添加到系统环境变量里面。

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

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

    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 3.1.6-1 windows中的awk

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

    gawk-3.1.6-1-bin windows最新版

    gawk-3.1.6-1-bin windows的awk 最新版,安装后可在windows操作系统上像在linux上使用awk命令。

    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-5.0.1-w32.zip

    windows上跑的awk,把zip文件解压,然后把bin目录加到环境变量里面,亲测有效

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

    Generic Mapping Tools,地球科学常用制图软件。

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

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

    UnixUtils:Windows下使用的常用Unix命令行工具

    部分工具独立编译,如file、lspci、nano、vim、gawk、aria2c、wget等,部分工具采用busybox内置命令,如ls、bash、clear、dos2unix、unix2dos等,部分工具采用第三方软件或windows系统命令用批处理文件模拟,如...

    windows下的uniq

    windows下的uniq,很好用的小东西,配合Gawk使用更佳。

    windows上可直接使用的awk、sed、grep等文本处理命令和彩色显示echo命令(from.Cygwin).zip

    包含命令:awk、cat、cut、diff、echo、gawk、grep、head、sed、sort、tac、tail、tr、uniq、wc 可以在windows上cmd窗口显示彩色文字,用法:echo.exe -e "\033[32;1mGREEN\033[0m

    gawk-5.1.0-w32-bin.zip

    awk for Windows 2021年4月最新版

    Unix工具集for Windows

    常用unix工具的windows编译版。包内为许多独立exe文件,没有dll依赖,无需安装。 文件列表:ansi2knr.exe(以下省略.exe扩展名),basename,bc,bison,bjam,bunzip2,bzip2,bzip2recover,cat,chgrp,chmod,chown,cksum,...

    mingw-get-inst-20111118

    在基本层,MinGW 是一组包含文件和端口库,其功能是允许控制台模式的程序使用微软的标准C运行时间库(MSVCRT.DLL),该库在所有的 NT OS 上有效,在所有的 Windows 95 发行版以上的 Windows OS 有效,使用基本运行...

    mingw64.rar

    除开 GCC (GNU 编译器集合) 以外,MinGW 还包含有一些其他的 GNU 程序开发工具 (比如 gawk bison 等等)。 开发 MinGW 是为了那些不喜欢工作在 Linux(FreeBSD) 操作系统而留在 Windows 的人提供一套符合 GNU 的 GNU ...

    windows dos环境下直接运行linux命令集合

    使用方法,解压到本地目录,配置path,即可在dos下使用linux命令。 windows下能直接执行的linux命令,基本包括日常所有,如:[.exe grolbp.exe regtool.exe a2p.exe grolj4.exe rm.exe a2p5.10.0.exe grops.exe ...

    MinGw + 使用帮助

    MinGW:一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你生成本地的Windows程序而不需要第三方C运行时库。 实际上 MinGW 并不是一个 单纯的C/C++ 编译器,而是一套 GNU 工具集合。除...

    awk bin doc

    Gawk for Windows -------------------------------------------------------------------------------- Gawk: pattern scanning and processing language Version 3.1.6 Description Several kinds of tasks ...

Global site tag (gtag.js) - Google Analytics