第 5 回 - 総合演習(1)

[11/07, 2009 H.Aman]

C 問題

  • c1. (シェルスクリプト+Perl)

    カンマ区切り(CSV)形式のファイルをタブ区切り形式のファイルに変換して出力するフィルタプログラム c1.pl を作りなさい. そして,c1.pl を呼び出してタブ区切り形式のファイルを作成するシェルスクリプト c1.sh を作りなさい. (c1.sh の中で c1.pl を呼び出すこと.)

    つまり,以下のように実行すると foo.csv から foo.txt が自動生成される: ※foo.csv はカンマ区切り形式,foo.txt はタブ区切り形式のファイルとする.

    $ bash c1.sh foo.csv

  • c2.(Perl)

    カンマ区切り(CSV)形式のファイルの内容を HTML の表形式で出力する Perl スクリプト c2.pl を作りなさい. なお,CSV ファイルの一行目は項目名と解釈し,背景には他の行とは異なる色を付けることとする. 具体的にどういった表にすべきかは自由に決めてよい.


  • c3.(シェルスクリプト)

    カレントディレクトリに存在するファイル及びディレクトリを HTML の箇条書き形式で出力するスクリプト c3.sh を作りなさい. ただし,ディレクトリ及びファイルそれぞれにはリンクをはること.
    リンクをはるとは,例えば,dir というディレクトリがあれば <a href="./dir">dir</a> というタグを付け, file.txt というファイルがあれば <a href="./file.txt">file.txt</a> というタグを付けることを意味する.


  • c4.(Perl+シェル)

    テキストファイルを入力とし, その中に登場する単語を一覧表示(同じ単語が複数登場してはいけない)する Perl スクリプト c4.pl を作りなさい. ただし,単語を構成する文字として許されるのは アルファベット(小文字,大文字)のみとする. なお,一部が大文字であったり,複数形であったりしたものはそれぞれ別の単語とみなしてよい.

    ※Perl の中で文字列の比較は == ではなく eq になる. つまり if ( $x == $y ) ではなく if ( $x eq $y ) となることに注意.

    結果をアルファベット順(大文字優先)に並べたいときは sort コマンドを使うとよい.

    (実行例)
       $ perl c4.pl sample.txt | sort 
       A
       As
       Borrowing
       Meanwhile
       ...
       where
       with
       year

  • c5.(Perl)

    wc コマンドと同じ働きをする Perl スクリプト c5.pl を作りなさい. なお,ここでは単語の区切りは空白類(スペース,タブ,改行)として解釈さ れている(\b とは異なる).

    (実行例)
       $ perl c5.pl sample.txt
       行数 = 23
       単語数 = 200
       文字数 = 1489