awkでOSのコマンドを実行し、その終了待ちをする
Pocket

たまに、awkでパースした要素を使ってOSのコマンドを実行させたりすることがある。
で、さらにOSのコマンドだけではなく、さらにawkの処理を組み合わせてやりたいことがある。そういう時、ただ単にOSのコマンドを実行後に処理を記述すると、実行されるタイミングの違いによって意図した結果が得られない場合がある。

blacknon@BS-PUB-UBUNTU-01:~$ # 先にrevを実行しているが、処理速度の違いから後から実行しているprintが先に出力されている
blacknon@BS-PUB-UBUNTU-01:~$ echo TEST123 | awk '{print $0|"rev";print $0}'
TEST123
321TSET
Sponsored Links

こういった場合は、実行したOSのコマンドをclose(“cmd”)で記述してやることで、処理の終了待ちができる。

echo TEST123 | awk '{print $0|"rev";close("rev");print $0}'
blacknon@BS-PUB-UBUNTU-01:~$ echo TEST123 | awk '{print $0|"rev";close("rev");print $0}'
321TSET
TEST123

 

Pocket

Written by blacknon

インフラエンジニア(…のつもり)。 仕事で使うならクライアントはWindowsよりはUNIXの方が好き。 大体いつも眠い。

Leave a Comment

メールアドレスが公開されることはありません。

*