1、命令简介
gawk:模式扫描和处理语言。
2、命令用法
gawk [ POSIX or GNU style options ] -f program-file [ -- ] file ... gawk [ POSIX or GNU style options ] [ -- ] program-text file ... pgawk [ POSIX or GNU style options ] -f program-file [ -- ] file ... pgawk [ POSIX or GNU style options ] [ -- ] program-text file ...
3、命令描述
gawk
是Unix中原始awk程序的GNU版本,强大之处在于可以写脚本来读取文本行的数据,然后处理并显示数据。
4、命令选项
命令 | 描述 |
-f program-file, --file program-file | 从文件program-file中读取AWK程序源代码, 而不是从第一个命令行参数中读取。 可以使用多个-f(或--file)选项。 |
-F fs,-- field-separator fs | 使用fs作为输入字段分隔符(fs预定义变量的值)。 |
-v var = val,-- assign var = val | 在程序开始执行之前, 将值val赋给变量var。 AWK程序的BEGIN块可以使用这些变量值。 |
-b,-- characters-as-bytes | 将所有输入数据视为单字节字符。换句话说, 在尝试将字符串作为多字节字符处理时, 不要特别注意语言环境信息。 该--posix选项将覆盖此选项。 |
-c, --traditional | 在兼容模式下运行。在兼容模式下, gawk的行为与UNIX awk相同。 没有特定于GNU的扩展。 |
-C, --copyright | 在标准输出上打印GNU版权信息消息的简短版本, 然后成功退出。 |
-d[file], --dump-variables[=file] | 将全局变量,它们的类型和最终值的排序列表打印到file。 如果未提供文件, 则gawk在当前目录中使用名为awkvars.out的文件。 列出所有全局变量是在程序中查找印刷错误的好方法。 如果大型程序具有许多功能, 并且还希望确保函数不会无意中使用本应是局部变量的全局变量, 那么也可以使用此选项。使用诸如i,j等简单变量名称时, 这是一个特别容易犯的错误。 |
-e program-text, --source program-text | 使用program-text作为AWK程序源代码。通过此选项, 可以轻松地将库函数(通过-f和--file选项使用) 与在Shell脚本中使用的命令程序上输入的源代码混合在一起。 |
-E file, --exec file | 与-f相似,但是,这是最后一个处理的选项。 这应该与#一起使用!脚本,尤其是CGI应用程序脚本, 以避免在命令行中从URL传递选项或源代码(!!!)。 此选项禁用命令行变量分配。 |
-g,-- gen-pot | 扫描并解析AWK程序, 并在标准输出上生成GNU .pot( 便携式对象模板)格式文件, 其中包含该程序中所有可本地化字符串的条目。 程序本身未执行。有关.pot文件的更多信息 ,请参见GNU gettext分发。 |
-h,--help | 在标准输出上打印可用选项的简短摘要。 根据GNU编码标准, 这些选项会导致立即成功退出。 |
-L [value], --lint[=value] | 对于可疑的构造或不能移植到其他AWK实现的构造, 提供警告。如果可选参数为fatal, 则lint警告将变成致命错误。这可能是极端的, 但它的使用肯定会鼓励开发更清洁的AWK程序。 如果有一个可选参数invalid, 则只会发出关于实际无效的警告。 (这还没有完全实现。) |
-n, --non-decimal-data | 识别输入数据中的八进制和十六进制值。 请谨慎使用此选项! |
-N,-- use-lc-numeric | 使gawk在解析输入数据时使用语言环境的小数点字符。 尽管POSIX标准要求此行为, 并且当--posix生效时gawk会要求这样做, 但默认情况是遵循传统行为,并使用句点作为小数点, 即使在句点不是小数点字符的语言环境中也是如此。 此选项将覆盖默认行为,而没有--posix选项的严格要求。 |
-O, --optimize | 对程序的内部表示启用优化。当前, 这仅包括简单的恒定折叠。 该GAWK维护者希望随着时间的推移添加额外的优化。 |
-p [ prof_file ],-- profile[ = prof_file ] | 将分析数据发送到prof_file。 默认值为awkprof.out。与gawk一起运行时, 配置文件只是程序的 “pretty printed” 版本。 与pgawk一起运行时, 配置文件在左边距中包含程序中每个语句的执行计数, 以及每个用户定义函数的函数调用计数。 |
-P,-- posix | 这将打开兼容模式,并具有以下其他限制: \x无法识别转义序列 FS设置为单个空格时,只有空格和制表符充当字段分隔符, 而换行符则不 不能在?和:之后继续行。 无法识别关键字函数的同义词func 不能使用运算符**和**=代替^和^= 该fflush()函数不可用 |
-r,-- re-interval | 在正则表达式匹配中启用间隔表达式的使用。 传统上,间隔表达式在AWK语言中不可用。 POSIX标准添加了它们, 以使awk和egrep彼此一致。 默认情况下启用它们, 但是此选项仍可与--traditional一起使用。 |
-R, --command file | 仅Dgawk。从文件中读取存储的调试器命令。 |
-S, --sandbox | 在沙盒模式下运行gawk,禁用system()函数, 使用getline输入重定向,使用print和printf输出重定向, 以及加载动态扩展。命令执行(通过管道)也被禁用。 这有效地阻止了脚本访问本地资源(命令行上指定的文件除外)。 |
-t,-- lint-old | 提供有关无法移植到Unix awk原始版本的构造的警告。 |
-- | 发出结束选项的信号。 对于允许AWK程序本身的进一步参数 以“-”开头非常有用。 这主要是为了与大多数其他POSIX程序 使用的参数解析约定保持一致。 |
5、使用示例
1)命令行读取程序脚本
gawk '{print "hello world"}'
2)指定分隔符
gawk -F: '{print $1}' /etc/passwd