GNU awk扩展正则补充,对其它GNU的程序也通用:
\w任何可以做单词组成成分的字符匹配(字母、数字、下划线)
\W和\2相反
\<匹配单词的开头
\>匹配单词的结尾
\y匹配一个单词的开头和结尾,例:\yballs?\y
\B匹配单词内部的字符,例:\Bxx\B匹配 axxa但是不匹配a xx a
分隔字段:
1、使用FS指定分隔符,如果指定为空客串时,那么记录中每个字符都成为一个独立的字段
2、使用变量FIELDWIDTHS指定固定宽度的字段,例:FIELDWIDTHS = "3 3 8 8"(空格也被视为一个字符的长度)
忽略大小写
IGNORECASE默认值为0不忽略大小写;值非零忽略大小写
ERRNO
设置getline重定向和close()期间的错误描述。
补充函数:
gensub(r,s,h,t)指定在t中替换第h次匹配的r为字符串s,和sub\gsub的主要不同是,该函数不会改变输出的字符串,新字符串为返回值。
[iyunv@localhost upload]# echo yes no | gawk '{print gensub(/(yes) (no|NO)/,"\\2","g")}'
no
[iyunv@localhost upload]# echo yes no | gawk '{print gensub(/(yes) (no|NO)/,"&\\\\ haha","g")}'
yes no\ haha
两个时间函数:
systime():返回1970至今的秒数
strftime(format,timestamp):依照format格式化,timestamp(如果没有timestamp则 使用当前时间)。如果也没有format,经测试用默认格式和date输出相同。
[iyunv@localhost upload]# awk 'BEGIN {print strftime("%Y-%m-%d %H:%M:%S",88888888)}'
1972-10-26 03:21:28
[iyunv@localhost upload]# awk 'BEGIN {print strftime("%y-%m-%d %H:%M:%S",88888888)}'
72-10-26 03:21:28
[iyunv@localhost upload]# awk 'BEGIN {print strftime("%y-%m-%d %H:%M:%S")}'
13-06-16 21:33:47
|