awk 是什么?
尽管操作可能会很复杂,但命令的语法始终是: 【相关文章:NAT原理简介、各种 ADSL Mode】最简单地说, awk 是一种用于处理文本的编程语言工具。 awk 实用工具的语言在很多方面类似于 shell 编程语言,尽管 awk 具有完全属于其本身的语法。在最初创造 awk 时,其目的是用于文本处理,并且这种语言的基础是,只要在输入数据中有模式匹配,就执行一系列指令。该实用工具扫描文件中的每一行,查找与命令行中所给定内容相匹配的模式。如果发现匹配内容,则进行下一个编程步骤。如果找不到匹配内容,则继续处理下一行。 【扩展阅读:路由器NAT功能配置简介】其中 pattern 表示 awk 在数据中查找的内容,而 action 是在找到匹配内容时所执行的一系列命令。花括号 ({}) 不需要在程序中始终出现,但它们用于根据特定的模式对一系列指令进行分组。 【扩展信息:advance search on go】awk {pattern + action} 了解字段 实用工具将每个输入行分为记录与字段。 记录 是单行的输入,而每条记录包含若干字段。默认的字段分隔符是空格或制表符,而记录的分隔符是换行。虽然在默认情况下将制表符与空格都看作字段分隔符(多个空格仍然作为一个分隔符),但是可以将分隔符从空格改为任何其它字符。 为了进行演示,请查看以下保存为 emp_names 的员工列表文件: 46012 dulaney evan mobile al 46013 durham jeff mobile al 46015 steen bill mobile al 46017 feldman evan mobile al 46018 swim steve unknown al 46019 bogue robert phoenix az 46021 june micah phoenix az 46022 kane sheryl unknown ar 46024 wood william muncie in 46026 fergus sarah muncie in 46027 buck sarah muncie in 46029 tuttle bob muncie in 当 awk 读取输入内容时,整条记录被分配给变量 。每个字段以字段分隔符分开,被分配给变量 、 、 等等。一行在本质上可以包含无数个字段,通过字段号来访问每个字段。因此,命令 awk {print ,,,,} names 将会产生的打印输出是 46012 dulaney evan mobile al 46013 durham jeff mobile al 46015 steen bill mobile al 46017 feldman evan mobile al 46018 swim steve unknown al 46019 bogue robert phoenix az 46021 june micah phoenix az 46022 kane sheryl unknown ar 46024 wood william muncie in 46026 fergus sarah muncie in 46027 buck sarah muncie in 46029 tuttle bob muncie in 值得注意的一项重要内容是, awk 解释由空格分隔的五个字段,但当它打印显示内容时,在每个字段间只有一个空格。利用为每个字段指定了唯一号码的功能,您可以选择只打印特定的字段。例如,只打印每条记录的姓名时,只需选择第二个与第三个字段进行打印: $ awk {print ,} emp_names dulaney evan durham jeff steen bill feldman evan swim steve bogue robert june micah kane sheryl wood william fergus sarah buck sarah tuttle bob $ 您还可以指定按任何顺序打印字段,而无论它们在记录中是如何存在的。因此,只需要显示姓名字段,并且使其顺序颠倒,先显示名字再显示姓氏: $ awk {print ,} emp_names evan dulaney jeff durham bill steen evan feldman steve swim robert bogue micah june sheryl kane william wood sarah fergus ... 下一页