bash-3.00# awk '{print NR}' f1.txt
1
2
3
4
しかし、FNRは何も印刷しません。
awk '{print FNR}' f1.txt
上記の行は出力を提供しません。 Sun OSのawkにはFNR変数がないようです。それでは、これを標準化するためにできることはありますか?また、最新のすべてのコマンドのライブラリを入手し、sed、sortなどの現在のコマンドをインストール/更新できます。
SunOS 不明 5.10 Generic_142910-17 i86pc i386 i86pc
答え1
awk
ただ1つ以上のバージョンではありません。それぞれに複数のバージョンを持つawkの実装がたくさんあります。すべてのUnicesには、Unixに付属している内部で管理されている独自のツールとソフトウェアのセットがあり、これらのツールの使用は通常、正確な実装バージョンによって異なります。
GNU awkとの交換を開始した場合は、/usr/bin/awk
以下からダウンロードできます。http://gnu.orgすると、問題が発生します。
一部の Unices は、一部の標準ユーティリティの代替またはフリーソフトウェアバージョンをパッケージとして提供しています。通常、別の場所(/opt/gnu
GNUツールの場合など)または別の名前(GNU awkの場合)にインストールしてgawk
これを行います。そうでない場合は、ソースコードでダウンロードしてビルドし、別の場所または別の名前で手動でインストールできます。
ただし、Solarisにはいくつかのユーティリティの非常に古い非標準バージョンが含まれており、/usr/bin
最新/標準バージョンは他の場所に保存されていることが知られています。
これはawkの場合です。/usr/bin/awk
Solarisのawkは1979年のオリジナルawkに基づいています。 awkは1988年頃に書き直され、awkと呼ばれましたnawk
。すべての最新のawk
実装はこれに基づいています(POSIX仕様がベースであるnawk
ため)。awk
Solarisでシステムを更新して$PATH
標準/POSIX環境(通常/usr/xpg4/bin
および/または /usr/xpg6/bin
最初に入れる$PATH
)、awk
標準となります。または代わりにnawk
電話することもできますawk
。
これはと同じです。またはをsh
使用できます。/usr/xpg4/bin/sh
ksh
標準sh(例:いいえ /bin/sh
Solaris では) 以下も使用できます。
command -p awk
ぜひ電話してください持ち運べる以前のものの代わりに。