Linux gawk 命令

Linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。本文主要介绍Linux gawk 命令。

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


推荐阅读
cjavapy编程之路首页