web-dev-qa-db-ja.com

awk、mawk、nawk、gawk ...何?

私はawkの学習を始めたばかりで、周りのすべてのバージョンについて少し混乱しています。すべてのUnixライクなシステムで見られる「バージョン」はありますか?分かりますよ、分かりやすいvi?標準のawkは-Fオプションをサポートしていますか?

39
Trollhorn

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の実装)などの他のバージョンもあります。

38
John T

awkだけを使用できます。これはPOSIXによって定義されているため、すべてのPOSIX準拠システムに存在する必要があります。

-Fパラメータは 必須 でもあります。

6
Joey

まず簡単な答え:

気にする必要はありません。システムのawkmawkまたはgawkへのシンボリックリンクであり、さらに重要なことに、3つのバージョンすべてawkmawkgawkは完全に互換性があります。 awk/gawkmawkの速度は(そうであると)高速であるので、速度に違いがある(と言われています)。

唯一の例外はnawkで、これにはいくつかの機能がありませんが、これを実際に見つけられる可能性はかなり少ないです。

2
runlevel0

awkは、ほぼすべての* NIXベースのシステムに存在しますが、サポートするものの正確な詳細は、どのように/bin/shは特定のシェル、多くの場合bashまたはその派生物の1つにリンクされています。 (記録として、vivimにもシンボリックリンクされている多くのマシンも知っています。)

1

Wikipedia AWKページ は、AWKを理解し始めるための初心者向けリファレンスです。
フィールド区切り文字 オプション '-F 'は、AWKのすべてのバリアントでサポートされています-afaik。

0
nik