電子計測
2001.7.13


  1. 本日の作業内容

    1. 課題の採点に関する注意
    2. 無線LANについて
    3. アンケートについて
    4. awk
    5. TeXとの連携
    6. 本日の作業
    7. 本日の復習課題


  2. 課題の採点に関する注意

    別のページにあるように、課題の提出形式が守られていない場合には今後は採点を 行わないことにした。理由は、期末を迎えて提出量が増えて来たために、 こちらが内容を酌量して読み解く時間が無くなったためである。なお、課 題の提出については、7月27日(金)の17:00までに提出されたものについて は採点対象とするので、遅れている場合にも努力して提出すれば、評価に 加える。


  3. 無線LANについて

    無線LANの利用を希望する場合には申し出ること。詳細については口頭で紹介する。

  4. アンケートについて

    全学を対象とした授業アンケートを行うので、時間内に提出すること。詳細につい ては、口頭で紹介する。

  5. awk

    この授業の最後のテーマはawkである。UNIXの利用者は商用アプリケーションなど を使わずに自分でスクリプトを組んだり、簡単なコマンドの組合せにより処理を行 うことを好む傾向があった。理由は、基本的にはプログラマが使用するOSであった からであるが、そのため、ワープロや表計算ソフトなどはあまり普及せず、TeXを 基本として文書作成を行う伝統がある。

    近年のLinuxの広まりにより、デスクトップ環境の充実が急速に成し遂げられたが、 それでも、コマンドやスクリプトの組合せで処理をする環境は残されている。 awkもその典型的な例で、テキストファイルでデータを作成すれば種々の処理が行 えるので、ちょっとした作業に重宝する場合がある。教科書の例を試してみて、感 覚をつかんでおいて欲しい。

  6. TeXとの連携

    awkの応用例として、TeXと組み合わせて、データ処理をしたものを表組することを 実習してみる。使用するデータは以下のようなテキストデータとする。

    名前 英語 数学 物理
    島根太郎 65 80 85
    松江花子 90 70 75
    出雲次郎 80 80 90
    川津三郎 85 75 60
    学園一郎 80 90 95

    ここで、項目間の区切りはスペースである。

    学生ごとの平均点を求めて表に出力することを行う。awkによ る計算処理自体は、比較的単純で上記のデータがdata.txtというファイル名だとす ると、ターミナルにおいてコマンドラインで以下のように処理できる。

    $ awk '{print ($2+$3+$4)/3}' data.txt

    結果は一行目の文字だけのところで0が表示される以外は、ちゃんと平均点計算が できているはずである。これを表データにするためには、コマンドラインからでは 面倒なので、スクリプト(ファイル名はとりあえずscriptとする)を作成してみる。 内容は以下のようにしてみよう。

    {
    if ($2 <= 100) {
      print $1 $2 $3 $4 ($2+$3+$4)/3
      }
    }

    これをターミナルから実行してみよう。

    $ awk -f script data.txt

    結果は表示されるが、データがくっついて見づらいと思う。後は、整形である。 TeXの表出力の形式を思い出してみよう。そうすると、以下のようなスクリプトが 考えられる。

    {
    if (NR ~ 1) {
      print "\\documentclass{jarticle}"
      print "\\begin{document}"
      print "\\begin{tabular}{|c|c|c|c|c|} \\hline"
      print $1, "\&", $2, "\&", $3, "\&", $4, "\& 平均点  \\\\ \\hline"
      }
    if (NR > 1 && NR < 6) {
      print $1, "\&", $2, "\&", $3, "\&", $4, "\&", ($2+$3+$4)/4, "\\\\ \\hline"
      }
    if (NR ~ 6) {
      print "\\end{tabular}"
      print "\\end{document}"
      }
    }

    急に複雑になったが、これまでに学習したC言語などの知識があれば大体のところ は分かるのではないだろうか。上記のスクリプトの意味は、もし、読み込んだデー タが一行目ならばTeXのプリアンブルを出力して、表の初めの部分と見出しを出力 する。二行目以降はデータを出力し、最後の行であれば、表以降のTeXの終りの作 業を行っている。以下に少し注意事項を挙げておく。

    • NRは読み込んだ行数を数えている変数
    • ~の記号は文字列の一致をテストする演算子
    • TeXの命令のためのバックスラッシュを特殊文字としてエスケープするために バックスラッシュがもう一つ必要
    • &もバックスラッシュによりエスケープする

    スクリプトの実行は、例えば、

    $ awk -f script data.txt > table.tex

    のようにすれば、TeXファイルが生成されるので、いつもの作業によりxdviで表示 させることができる。

  7. 本日の作業

    作業1

    アンケートに回答して提出すること。

    作業2

    教科書にある awk の利用法を自分で試してみること。

    作業3

    TeXとの連携の操作についても試してみること。

  8. 本日の復習課題

    授業の終わり頃に宿題用の課題を用意するので、指示があったらこのページを再読込して課題を見ること。


ページの先頭へ戻る

目次ページへ戻る