Debian等でのインストール直後のawkは mawk が導入されます.
Debianのパッケージでは他にGNU awk(パッケージ名 gawk ), The One True Awk(パッケージ名 original-awk )というものもあります.*BSDなどでよく見る nawk もあるように見えますが,シンボリックリンクだけのようです.
(他にもあるかもしれない?)
mawk は初期状態で入っていて軽量.GNU awk はmawkに比べて多機能で既定値では導入されませんが, byobu などが依存を求めるので入っている人も多いと思います.
複数のawkパッケージが導入されているときに awk と実行したときは update-alternatives で管理されたシンボリックリンク先のいずれかのawkが実行されます.これを切り替えてみます.
切り替え前の状態です. awk , nawk が gawk(GNU awk) に向いています.
$ ls -l /usr/bin/*awk
lrwxrwxrwx 1 root root     21 May 16 00:33 /usr/bin/awk -> /etc/alternatives/awk
-rwxr-xr-x 1 root root 694624 Feb 10 17:42 /usr/bin/gawk
-rwxr-xr-x 1 root root 158296 Feb 17  2020 /usr/bin/mawk
lrwxrwxrwx 1 root root     22 May 16 00:33 /usr/bin/nawk -> /etc/alternatives/nawk
-rwxr-xr-x 1 root root 135848 Dec 22 06:24 /usr/bin/original-awk
$ ls -l /etc/alternatives/*awk
lrwxrwxrwx 1 root root 13 May 16 04:27 /etc/alternatives/awk -> /usr/bin/gawk
lrwxrwxrwx 1 root root 13 May 16 04:27 /etc/alternatives/nawk -> /usr/bin/gawkawk コマンドを切り替えてみます.ここでは gawk から mawk にしました.
$ sudo update-alternatives --display awk (1)
awk - auto mode
  link best version is /usr/bin/gawk
  link currently points to /usr/bin/gawk
  link awk is /usr/bin/awk
  slave awk.1.gz is /usr/share/man/man1/awk.1.gz
  slave nawk is /usr/bin/nawk
  slave nawk.1.gz is /usr/share/man/man1/nawk.1.gz
/usr/bin/gawk - priority 10
  slave awk.1.gz: /usr/share/man/man1/gawk.1.gz
  slave nawk: /usr/bin/gawk
  slave nawk.1.gz: /usr/share/man/man1/gawk.1.gz
/usr/bin/mawk - priority 5
  slave awk.1.gz: /usr/share/man/man1/mawk.1.gz
  slave nawk: /usr/bin/mawk
  slave nawk.1.gz: /usr/share/man/man1/mawk.1.gz
/usr/bin/original-awk - priority 0
  slave awk.1.gz: /usr/share/man/man1/original-awk.1.gz
$ sudo update-alternatives --config awk (2)
There are 3 choices for the alternative awk (providing /usr/bin/awk).
  Selection    Path                   Priority   Status
------------------------------------------------------------
* 0            /usr/bin/gawk           10        auto mode
  1            /usr/bin/gawk           10        manual mode
  2            /usr/bin/mawk           5         manual mode
  3            /usr/bin/original-awk   0         manual mode
Press <enter> to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/bin/mawk to provide /usr/bin/awk (awk) in manual mode
$ sudo update-alternatives --set awk /usr/bin/mawk (3)
update-alternatives: using /usr/bin/mawk to provide /usr/bin/awk (awk) in manual mode
$ ls -l /etc/alternatives/*awk (4)
lrwxrwxrwx 1 root root 13 Jun  7 08:27 /etc/alternatives/awk -> /usr/bin/mawk
lrwxrwxrwx 1 root root 13 Jun  7 08:27 /etc/alternatives/nawk -> /usr/bin/mawk- 現在の awkの設定を確認.gawkに向いている
- 対話モードで update-alternativesコマンドを起動して2のmawkに設定
- コマンドモードの場合
- awk,- nawkが- mawkに向いたのを確認.
切り替えできました. :)
ちなみに update-alternatives で管理されているコマンドの一覧は以下のコマンドで表示できます.
$ update-alternatives --get-selections環境1(Debian sid amd64)
$ dpkg-query -W mawk gawk original-awk dpkg dpkg 1.20.9 gawk 1:5.1.0-1 mawk 1.3.4.20200120-2 original-awk 2018-08-27-1 $ lsb_release -dr Description: Debian GNU/Linux 11 (bullseye) (1) Release: 11 $ arch x86_64
- 実際はsid
環境2(Ubuntu 21.04 amd64)
$ dpkg-query -W mawk gawk dpkg dpkg 1.20.9ubuntu1 gawk 1:5.1.0-1build1 mawk 1.3.4.20200120-2 $ lsb_release -dr Description: Ubuntu 21.04 Release: 21.04 $ arch x86_64
環境3(Raspberry Pi OS buster armhf)
$ dpkg-query -W mawk gawk dpkg dpkg 1.19.7 gawk 1:4.2.1+dfsg-1 mawk 1.3.3-17 $ lsb_release -dr Description: Raspbian GNU/Linux 10 (buster) Release: 10 $ arch armv7l
One thought to “Debian/Ubuntuでawkを切り替える”