一个网站成本,南阳网站推广招聘,成都网站建设价格,互联网企业网站设计awk是一种强大的编程语言#xff0c;用于在Linux/Unix系统下对文本和数据进行处理。以下是对awk的详细教程#xff1a;
一、awk简介
awk由Alfred Aho、Brian Kernighan和Peter Weinberger三人开发#xff0c;其名称分别代表这三位作者姓氏的第一个字母。awk支持用户自定义…awk是一种强大的编程语言用于在Linux/Unix系统下对文本和数据进行处理。以下是对awk的详细教程
一、awk简介
awk由Alfred Aho、Brian Kernighan和Peter Weinberger三人开发其名称分别代表这三位作者姓氏的第一个字母。awk支持用户自定义函数和动态正则表达式等先进功能是Linux/Unix下的一个强大编程工具。它在命令行中使用但更多是作为脚本来使用。
二、awk命令格式和选项
awk命令的基本格式如下
awk [options] script varvalue file(s)或者
awk [options] -f scriptfile varvalue file(s)其中常用的命令选项包括
-F fs指定输入分隔符fs可以是字符串或正则表达式如-F:默认的分隔符是连续的空格或制表符。-v varvalue赋值一个用户定义变量将外部变量传递给awk。-m[fr] val对val值设置内在限制。-mf选项限制分配给val的最大块数目-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能在标准awk中不适用。
三、awk脚本结构
awk脚本由模式和操作组成。模式可以是正则表达式、关系表达式等操作则是由一个或多个命令、函数、表达式组成之间由换行符或分号隔开并位于大括号内。
awk脚本的基本结构如下
awk BEGIN{ printstart} pattern{ commands } END{ printend} file一个awk脚本通常由BEGIN语句块、能够使用模式匹配的通用语句块、END语句块3部分组成这三个部分是可选的。
BEGIN语句块在awk开始从输入流中读取行之前被执行这是一个可选的语句块比如变量初始化、打印输出表格的表头等语句通常可以写在BEGIN语句块中。END语句块在awk从输入流中读取完所有的行之后即被执行比如打印所有行的分析结果这类信息汇总都是在END语句块中完成它也是一个可选语句块。pattern语句块中的通用命令是最重要的部分它也是可选的。如果没有提供pattern语句块则默认执行{ print }即打印每一个读取到的行。
四、awk内置变量
awk提供了许多内置变量这些变量可以在awk脚本中直接使用。以下是一些常用的内置变量
$n当前记录的第n个字段比如n为1表示第一个字段n为2表示第二个字段。$0这个变量包含执行过程中当前行的文本内容。ARGC命令行参数的数目。ARGIND命令行中当前文件的位置从0开始算。ARGV包含命令行参数的数组。CONVFMT数字转换格式默认值为%.6g。ENVIRON环境变量关联数组。ERRNO最后一个系统错误的描述。FIELDWIDTHS字段宽度列表用空格键分隔。FILENAME当前输入文件的名。FNR同NR但相对于当前文件。FS字段分隔符默认是任何空格。IGNORECASE如果为真则进行忽略大小写的匹配。NF表示字段数在执行过程中对应于当前的字段数。NR表示记录数在执行过程中对应于当前的行号。OFMT数字的输出格式默认值是%.6g。OFS输出字段分隔符默认值是一个空格。ORS输出记录分隔符默认值是一个换行符。RS记录分隔符默认是一个换行符。RSTART由match函数所匹配的字符串的第一个位置。RLENGTH由match函数所匹配的字符串的长度。SUBSEP数组下标分隔符默认值是34。
五、awk操作
awk的操作部分可以包含变量或数组赋值、输出命令、内置函数和控制流语句等。
变量或数组赋值可以在awk脚本中对变量或数组进行赋值操作。输出命令使用print或printf函数可以将处理结果输出到标准输出或文件中。内置函数awk提供了许多内置函数如数学函数、字符串函数等可以在脚本中直接使用。控制流语句awk支持if-else、while、for等控制流语句用于实现复杂的逻辑控制。
六、awk示例
以下是一些awk的使用示例
下面例子中filename表示目标文件 打印文件的全部内容 awk {print} filename使用冒号作为字段分隔符打印第一列 awk -F: {print $1} filename搜索包含特定字符串的行并打印整行内容 awk -F: /search_string/{print $0} filename打印文件的总行数 awk END{print NR} filename使用BEGIN和END语句块进行初始化和汇总操作 awk BEGIN{sum0} {sum$1} END{print sum} filename七、注意事项
awk脚本中的字符串和正则表达式需要使用双引号或单引号括起来。在awk脚本中变量和字段的引用不需要使用$符号进行转义。awk默认以空格或制表符作为字段分隔符但可以通过-F选项指定其他分隔符。
通过以上内容的学习您可以掌握awk的基本用法和常见操作并能够使用awk对文本和数据进行高效的处理和分析。