awkには、連想配列として配列が用意されていますが、pythonやperlのように配列操作が充実してないですよね。

特に、unshift・shift・push・pop関数に関しては、あるとほんと便利なので、自作して使いまわしています。

下記に紹介してみたいと思います(あくまで自作なので、本来のunshift・shift・push・pop関数と異なる場合があるのはご了承ください)。

スポンサーリンク

サンプルコード

unshift・shift・push・pop関数を、それぞれユーザー定義関数としてunshiftArr()・shiftArr()・pushArr()・popArr()を定義しています。in.txtを一行ずつ読み込んで、unshiftArr()をcallして1フィールド(列)目を配列の先頭に詰めていきます。その後、ENDブロックで、unshiftArr()・shiftArr()・pushArr()・popArr()を順に実行しています。

スポンサーリンク

awkでunshift関数を自作

unshiftについては下記のようにユーザー定義しています。
実行すると、配列arrの先頭に、文字列instrを入力します。

実行すると、下記のように”2″が配列の先頭に入力されています。

awkでshift関数を自作

shiftについては下記のようにユーザー定義しています。
実行すると、配列arrの先頭が削除されます。

実行すると、下記のように配列の先頭の”2″が削除されています。

awkでpush関数を自作

pushについては下記のようにユーザー定義しています。
実行すると、配列arrの後尾に”2″が入力されます。

実行すると、下記のように配列の後尾に”2″が入力されています。

awkでpop関数を自作

popについては下記のようにユーザー定義しています。
実行すると、配列arrの後尾が削除されます。

実行すると、下記のように配列の後尾の”2″が削除されています。

スポンサーリンク