我刚刚开始学习awk,我对这些版本有点困惑。在所有类Unix系统上都有“版本”吗?就像,你知道,简单的vi?标准awk是否支持-F选项?
我刚刚开始学习awk,我对这些版本有点困惑。在所有类Unix系统上都有“版本”吗?就像,你知道,简单的vi?标准awk是否支持-F选项?
Answers:
awk - 最常见的,将出现在大多数类Unix系统上,最旧的版本和较新的版本。
mawk - 快速AWK实现,它的代码库基于字节码解释器。
nawk - 当AWK语言被开发时,作者发布了一个新版本(因此是n - n ew awk)以避免混淆。可以把它想象成AWK的Python 3.0。
gawk - 缩写自GNU awk。开发人员尝试添加i18n支持的唯一版本。允许用户编写自己的C共享库,使用自己的“插件”扩展它。这个版本是Linux的标准实现,原始的AWK是为Unix v7编写的。
还有其他版本,如jawk(java实现),bwk(Brian W. Kernighan的实现)等。
file /etc/alternatives/awk
symbolic link to /usr/bin/mawk
你可以使用awk
。它由POSIX定义,因此必须存在于所有符合POSIX标准的系统上。
该-F
参数也由此强制要求。
gensub()
,测试awk
- > gawk
,并认为你很好去...
gawk --posix
根据POSIX标准使用gawk工作。它还会检查您的脚本是否符合标准。你可以awk --posix '' 2>/dev/null
在Ubuntu中使用,无论是gawk,mawk还是original-awk都用作awk,但是posix-option只能被gawk识别。--posix必须是原始awk的最后一个选项。你可以使用awk -W posix ''
gawk和mawk。
mawk --posix ''
失败,如果你使用mawk 1.3.3,但成功的错误消息,如果你使用mawk 1.3.4
awk
几乎所有基于* NIX的系统都会出现,但它所支持的具体细节会稍微改变,因为它完全有可能只是符号链接到一个不同的版本,类似于/bin/sh
经常链接到特定的shell,通常bash
或者其中一个它的衍生物。(为了记录,我也知道很多vi
符号链接的机器vim
。)
/usr/bin/awk
会运行nawk,gawk或BusyBox awk(类似于gawk的行为)。