Loading... <p> gawk程序是Unix中的原始awk程序的GNU版本,它提供了一种编程语言而不只是编辑器命令。在CentOS中awk命令实际上是gawk程序的链接文件名。</p> <p style="text-align:center"><img src="//cto.wang/usr/uploads/2016/07/20160703161314-26.jpg" title="1450854346267290.jpg" alt="1.jpg" /></p> <p> <strong><span style="font-size: 18px">基本语法:</span></strong></p> <p> awk [options] ‘program’ flie1 file2 …</p> <p> awk [options] ‘PATTERN{action}’ flie1 file2…</p> <p> <strong><span style="font-size: 18px">1、awk的输出</span></strong></p> <p> print item1,item2…</p> <p> 要点:</p> <p> (1)各项目之间使用逗号分隔,而输出时则使用输出分隔符分隔;</p> <p> (2)输出的各item可以是字符串数值、当前记录的字段、变量或awk的表达式;数值会被隐式转换为字符串后输出;</p> <p> (3)print后面item如果省略,相当于print $0,即输出整个文本行;输出空白,使用print “”; </p> <p> 选项:</p> <p> -F 分隔符:指定输入分隔符;</p> <p> 例如:</p> <p style="text-align:center"><img src="//cto.wang/usr/uploads/2016/07/20160703161314-1.jpg" title="1450858675421629.jpg" alt="2.jpg" /></p> <p> <strong><span style="font-size: 18px">2、awk的变量</span></strong></p> <p> awk可以使用的变量有内置变量和自定义变量两种。</p> <p> <strong>2.1 内置变量</strong></p> <p> FS:输入时指定字段分隔符,与-F选项作用类似;</p> <p style="text-align:center"><img src="//cto.wang/usr/uploads/2016/07/20160703161314-21.jpg" title="1450941506145061.jpg" alt="3.jpg" /></p> <p> RS:输入时指定行的分隔符(换行符);</p> <p style="text-align:center"><img src="//cto.wang/usr/uploads/2016/07/20160703161314-8.jpg" title="1450941797529191.jpg" alt="4.jpg" /></p> <p> OFS:输出时指定字段分隔符;</p> <p style="text-align:center"><img src="//cto.wang/usr/uploads/2016/07/20160703161314-77.jpg" title="1450942359976292.jpg" alt="5.jpg" /></p> <p> ORS:输出时指定行分隔符;</p> <p style="text-align:center"><img src="//cto.wang/usr/uploads/2016/07/20160703161315-62.jpg" title="1450942492687821.jpg" alt="6.jpg" /></p> <p> 上例中使用“—”做为行分隔符,每行的结束都被替换为“—”。</p> <p> NF:每行中的字段个数;</p> <p style="text-align:center"><img src="//cto.wang/usr/uploads/2016/07/20160703161315-65.jpg" title="1450946012917459.jpg" alt="12.jpg" /></p> <p> NR:行数,所有文件一并计数;</p> <p style="text-align:center"><img src="//cto.wang/usr/uploads/2016/07/20160703161315-46.jpg" title="1450943426344786.jpg" alt="8.jpg" /></p> <p> 上例中虽然有两个文件但其行数是合并计算的。</p> <p> FNR:各文件分别记录行数;</p> <p style="text-align:center"><img src="//cto.wang/usr/uploads/2016/07/20160703161315-26.jpg" title="1450943570721825.jpg" alt="9.jpg" /></p> <p> ARGV:数组,用于保存命令本身和命令行参数;</p> <p style="text-align:center"><img src="//cto.wang/usr/uploads/2016/07/20160703161315-9.jpg" title="1450943821370121.jpg" alt="10.jpg" /></p> <p> 数组下标从0开始计算,ARGV[0]保存awk命令本身,ARGV[1]保存表达式后面的条一个参数。</p> <p> ARGC:保存awk命令中参数的个数;</p> <p style="text-align:center"><img src="//cto.wang/usr/uploads/2016/07/20160703161315-56.jpg" title="1450944053732081.jpg" alt="11.jpg" /></p> <p> FILENAME:awk所正在处理的当前文件的名称。</p> <p style="text-align:center"><img src="//cto.wang/usr/uploads/2016/07/20160703161315-8.jpg" title="1450946134120363.jpg" alt="13.jpg" /></p> <p> <strong>2.2 自定义变量</strong></p> <p> (1) 可以在脚本中定义变量;</p> <p> (2) 可以在命令行中定义变量。</p> <p> 注:变量名区分大小写</p> <p> 格式如下所示:</p> <p style="text-align:center"><img src="//cto.wang/usr/uploads/2016/07/20160703161315-86.jpg" title="1450946576853157.jpg" alt="14.jpg" /></p> <p style="text-align:center"><img src="//cto.wang/usr/uploads/2016/07/20160703161315-37.jpg" title="1450946585405209.jpg" alt="15.jpg" /></p> <p></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信