BLOGTIMES
2014/06/20

awk で自身のプロセス ID を得る

  awk 
このエントリーをはてなブックマークに追加

例えば bash で自身のプロセス ID を知りたい場合には $$ という特殊変数を参照することができます。
今日はこれと同じことを awk でやろうとしたらハマってしまったので、後学のためにメモ。

やりたかったのは下記のような感じのログにタイムスタンプを付与するスクリプトにプロセス ID を追加することでした。

$ seq 1 5 | awk '{print strftime("%Y-%m-%d %T ") $0; system("");}' 2014-06-20 21:57:01 1 2014-06-20 21:57:01 2 2014-06-20 21:57:01 3 2014-06-20 21:57:01 4 2014-06-20 21:57:01 5

マニュアルを隅から隅まで調べていくと、PROCINFO["pid"] という特殊変数に入っているみたいです。
もしかしたらこれは gawk でないと動かないかもしれません。

The GNU Awk User’s Guide: Auto-set

PROCINFO["pid"] The process ID of the current process.

とりあえずこれを使ってやりたいことは達成できました。

$ seq 1 5 | awk '{print strftime("%Y-%m-%d %T ") "[" PROCINFO["pid"] "] " $0; system("");}' 2014-06-20 21:57:01 [14631] 1 2014-06-20 21:57:01 [14631] 2 2014-06-20 21:57:01 [14631] 3 2014-06-20 21:57:01 [14631] 4 2014-06-20 21:57:01 [14631] 5

    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/6798
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン