![]() |
メールマガジン 経営相談 情報技術 活動実績 経歴等 問合せ リンク | |
◆シェルって? ◆awkって? ◆正規表現 ◆サンプル ◆Linuxのはじめへ |
|
|
今回は、会社の必要に迫られて、UNIXのシェルプログラムを書きました。と言っても非常に短い50行足らずのものです。でも非常に便利だということを実感し、今後も使えるなぁという実感を得ました。 会社ではUNIXですが、家ではLinuxですので、多少の違いはありますが、多少です。 |
||
シェルって? |
||
シェルというのは、DOSでいうコマンドラインのようなものです。これでもわからない? そうですね、今はGUIが主流ですから。 OSはコマンド(命令)を待っています。ユーザはマウスをクリックしたりすることで、コンピュータに命令を与えているわけです。それを文字列で与える環境をシェルとUNIXでは呼んでいます。 シェルには種類がありますが、Linuxでは標準がbashというものです。Cシェルも使えます。他にKornとか、Bシェルとかがあります。ま、どれか一つ覚えれば、他はなんとかなるのではないかと思います。 またシェルはDOSでいうバッチファイルを書くことができます。DOSのバッチファイルよりもっと高機能です。(というよりDOSがUNIXを真似しているんですがね) |
||
このページのはじめに戻る | ||
awkって? |
||
UNIXのツールの一つです。今回使ったうちで最も面白かったものです。下の方に今回作ったシェルプログラムを掲載していますが、この中にあります。 awkはレコードのパターンを見て、レコードを操作するツールです。簡単にいうとファイルから条件にあう特定のレコードを取り出したり、レコードの中の一部分を抜き出したりできます。DOSとかWindowsではソフトを使わないとできないものです。 似たものにgrepというのがありますが、awkの方がいろいろできます。 またawkやgrepを利用する時には次の正規表現が非常に重要です。 |
||
このページのはじめに戻る | ||
正規表現 |
||
この正規表現という奴が結構曲者。要はパターンマッチングのための表現方法ですが、難しい。例えば、文字列の先頭がABCのものという表現は、「^ABC」と書いたり、初めがAでその後は何でも良いなら、「A*」、頭がAからZのものなら、「[A-Z]」という風に書きます。全部書くときりがありませんし、難しくなるのでまあ、そういうものがあると思ってください。 | ||
このページのはじめに戻る | ||
サンプル |
||
今回作ったシェルプログラムのサンプルが以下のものです。このサンプルはあるエリアをキーにしてそのキーがいくつか変化したら、ファイルを分割するというものです。今回のものはJOB番号という番号をキーにしてその番号が5回変わったら、ファイルを分割するようになっています。UNIXのシェルを勉強したい方にはいくつかのTIPSが入っていますので、よくご覧下さい。そうでない方は、ふーん、と見てください。でも実はこれではLinuxでは動いてもUNIXでは動きません。少々違いがあるためです。まだ改善の余地ありです。 | ||
#! /bin/csh ## Set initial variables set fileno=1 ## Sort & Make JOB-No file sort -u -o jobs.txt +0.2 -0.9 input.txt gawk '{ print substr($0,3,7) }' jobs.txt > jobs-u.txt ## Check jobs-u is null test -s jobs-u.txt set ST=$status ## Repeat until jobs-u.txt is null while ( ! $ST ) ## Make condition file gawk 'NR==1,NR==5 { print "/" $0 "/ { print $0 }" }' jobs-u.txt > cond.txt ## Make rest of jobs-u file & new jobs-u file gawk 'NR>5 { print $0 }' jobs-u.txt > jobs-r.txt mv jobs-r.txt jobs-u.txt ## Make separate files gawk -f cond.txt input.txt > jobs-s$fileno.txt set fileno=$fileno"1" ## Check jobs-u is null test -s jobs-u.txt set ST=$status end |
||
このページのはじめに戻る |