OpenTUT

awkで遊ぶ

昨日

awkで遊ぶ

awkって何?

  • テキスト処理によく利用されるコマンド
    • ファイル入力や,コマンドの出力のパイプに対して処理
    • 列を抽出

実はプログラミング言語(演算ができる)

よく使う例

$ ps aux | awk '{print $1}' | sort | uniq

  • awk '{print $1}'の部分でps aux(全てのプロセス)の1列目(ユーザ名)を抽出し,その結果をソートしてユニークな文字列を出力

ビープ音をひたすら流す

  • awk 'BEGIN{while(1){printf "\a"; system("sleep " rand())}}'
  • \aはベル文字(ビープ音や画面のフラッシュ)を示す
  • 修了する際はもう一つターミナルを開いて,ps aux | grep awkで PID を確認して,kill -9 プロセスIDする

好きな人は好きな単語を生成する

  • awk 'BEGIN{split("風 月 空 海 森 鳥 花 星 夢 音",w); for(i=0;i<5;i++){print w[int(rand()*10)] w[int(rand()*10)]}}'
  • for 文で5周ループ
  • 10個の文字の中からランダムに2つ抽出して表示

カラフルなランダムの文字を表示

  • awk 'BEGIN{while(1){printf "\033[3%dm%c\033[0m", int(rand()*8), 33+int(rand()*94)}}'
  • \033[3%dmでランダムな色を指定
  • %cでランダムな文字を指定
  • \033[0mで修了時に色をリセット

ランダムな場所に★を表示

  • awk 'BEGIN{while(1){printf "\033[%d;%dH", int(rand()*30)+1, int(rand()*80)+1; printf "★"; system("sleep 0.05")}}'
  • \033[%d;%dHでカーソルをランダムな位置に移動させて,そこに★を表示
  • 修了する際はもう一つターミナルを開いて,ps aux | grep awkで PID を確認して,kill -9 プロセスIDする

デモンストレーション

遊んでみます

最後に

いろいろできておもしろい