这篇文章给大家介绍如何正确的使用awk正则表达式,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
<强> 1,模糊匹配:强>
awk “{如果(97美元~//),print $ 0} & # 39;, data.f:如果第三项中含有“97”则打印该行 awk ,“{如果(4美元! ~/ufcx/), print $ 0} & # 39;,数据。f:如果第三项中不含ufcx有则打印
<强> 2,精确匹配:强>
awk “{如果(66美元==),print $ 0} & # 39;, data.f:如果第五项是66则打印 awk ,“{如果(5美元!=66)print $ 0} & # 39;, data.f :,如果第五项不是66则打印 awk ,“{如果(1美元的在5美元),print $ 0} & # 39;,数据。f:如果第一项大于第五项则打印
<强> 3,大小写匹配:强>
awk “{如果(/[Ss] ept), print $ 0} & # 39;, data.f:符合,则打印一行。 awk ,“[Ss] ept/, {print $ 2} & # 39;,数据。f:符合,则打印第二字段
<强> 4,任意匹配:强>
awk “{如果(2美元,~/^生产/),print $ 0} & # 39;, data.f:第二字段中,第二个字符为e,输出 awk ,“{如果(4美元,~/(有限合伙人| fcx)/), print $ 0} & # 39;, data.f:第四个字段含有有限合伙人或fcx则输出
<强> 5,,,,| |:强>
代码如下:
awk “{如果(3美元,1993 ~//,,,,2美元==9月),print $ 0} & # 39;, data.f:两边都真则输出 awk ,“{如果(3美元,~/a9/, | |, 2美元==9月),print $ 0} & # 39;,数据。f:一边为真则输出
<强> 6,变量定义:强>
awk '{日期=2美元;价格=5美元;如果(日期~/[Ss] ept)打印“价格”价格}& # 39;数据。f:变量定义,满足日期是9月或者9月的价格将输出。
<强> 7,修改数值(源文件数值不变)强>
awk “{基线=42;,如果(1美元在基线),5=5 + 100;美元,print $ 0} & # 39;, data.f:三行程序,以”;“分割
如果修改的是文本域,就要添加”“”“。例:如awk的{如果美元($ 2==翱赡堋?2=皌t”;打印$ 0}& # 39;数据。f
上边都是显示所有数据,awk的{如果(2美元==翱赡堋?{2美元=皌t”;打印$ 0}}& # 39;数据。f这个只显示修改数据,仔细看看,其实语法和c一样,只是最外边添加了一个{}符号。
<强> 8日创建新域:(源文件数值不变)
强>
awk “{如果(5美元在1美元){8美元=5 - 1美元;print $ 1、$ 8}} & # 39;, data.f: 或者awk ,“{如果(5美元在1美元){diff=5 - 1美元;print 1美元,diff}} & # 39;,数据。f
<强> 9数据统计:强>
awk '{(总+=$ 5)}{打印总}结束& # 39;data.f:“{(总+=$ 5)}”和“{打印总}”代表两个不同的代码段,如果没有结束每次的累积结果都会输出,最终可以理解为代码段落的标志,这样只输出最终结果即{打印总}只执行一次。
<强> 10,统计文件大小:强>
代码如下:
ls - l | awk的{如果(/^ ^ [d]/)总额=+ 5美元}{打印”总KB:“总}结束& # 39;:/^ ^ [d]/行首匹配可以不写域值1美元
<强> 11、awk内置变量:强>
命令行参数个数命令行参数个数
ARGV命令行参数排列
环境支持队列中系统环境变量的使用
文件名awk浏览的文件名
FNR浏览文件的记录数
FS设置输入域分隔符,等价于命令行- F选项
NF浏览记录的域个数
NR已读的记录数
OFS输出域分隔符
口服补液盐输出记录分隔符
RS控制记录分隔符
<强> 12,awk内置字符串处理函数强>
gsub (r, s)在整个$ 0中用年代替代r
gsub (r、s、t)在整个t中用年代替代r
指数(s, t)返回年代中字符串t的第一位置
长度(s)返回年代长度
匹配(s, r)测试年代是否包含匹配r的字符串,返回位置
分裂(年代,FS)在FS上将年代分成序列一个
sprint (F m t, exp)返回经F m t格式化后的经验值
子(r, s, 0美元)$ 0中s替换第一次r出现的位置
substr (s, p)返回字符串年代中从p开始的后缀部分
substr (s、p、n)返回字符串年代中从p开始长度为n的后缀部分
<强> 13,awk的gsub (/6 \。/78) {print $ 0} & # 39;data.f:将所有“6。“换成78,并输出强>
代码如下:
awk的{如果(2美元==9月){子(美元/3/,“9”,0);打印$ 0}}& # 39;数据。f:只替换第一个出现的
awk的开始{打印指数(“你好”、“lo”)} & # 39;:输出的值为4