archives - みる会図書館


検索対象: UNIX MAGAZINE 1990年9月号
2件見つかりました。

1. UNIX MAGAZINE 1990年9月号

連載 / / Li Language—① ェラーメッセージを出力して終了 printf("illegal inut : 1 t field is not number()s ,%s) ⅲ %s. \ が ー " ? "stdin" : F Ⅱ . 日 ) > "/dev/stderr" ・ $ 0 , $ , FILENAME ー exit(l); リスト 2 リストーの出力結果 alt . sources .55 a1t . sources .667 a1t . sources .762 archives .12 COITIP. archive S .110 comp. S . 118 comp ・ archives . 1005 comp ・ archives .1012 comp ・ archives .1093 comp ・ archives .1107 comp ・ archives .1124 comp ・ archive S .1171 COmp. archive S . 11 田 comp . リスト 3 改良フログラムの一部 ( t4. awk) # A1fred V. Aho , Brian W. Kernighan and Peter J. Weinberger , # " 盟 le A Prog1 、 amming Language" , Addison-Wes1ey, 1988. P161 を利用 # quick sort ー A C1eft. ・ right] という配列をクイックソートする。 function qsort( if (debug—qsort) right "\n" ・ printf "qsort : " left " = if (left # 配列要素数が 1 個なら何もしないでリター ret ・ urn ・ swap(A, 1 t if (debug-qsort) printf "qsort : 十十 ) for (i if (debug-qsort) ・ [left] ) if (A swap(A, 1 , A [ 幻 , A C1eft] ) ; left , " left " = swap (A , qsort (A, qsort(A, function swap (A, t = A Ci] ; 注意 : リスト 1 の関数定義の部分をこのプログラムで置き換える。 ( ・・・・・・で示した部分は、参考文献 [ 2 ] の 161 ページのプログラムを参照 ) ・ 1 t ) ; ・ last ー 1 ) ; right) ; 99 UNIX MAGAZINE 1990.9

2. UNIX MAGAZINE 1990年9月号

連載 ZLittIe Language¯① gnews では、保存しておきたい記事をファイルにしまう ときにニュースグループと記事番号からファイル名を決定 し、ホームディレクトリの News の下にセープするように なっています。ファイル名は、たとえは次のような具合に なります。 a1t . sources .55 a1t . sources .667 alt . sources .762 comp ・ comp ・ comp . comp . COITIP . comp . comp ・ comp ・ comp ・ comp ・ archives archives archives archives archives archives archives archives archives archives .1005 .1012 .1093 .110 . 1107 . 1124 . 1171 .118 .1188 .12 このファイルを読むときには、 GN U Emacs の dired (directory editor) という機能が使われます。これは、 ls の結果をもとにファイル操作や編集の機能を提供するも のです。上のような順番でリスト表示されるのはこのため 念のために、簡単に説明しておきます。 でソートしたものを表示するからです。 ードはファイル名を文字コードの昇順 です。つまり、、、 ls sort 十 1 —n キーを数値でソートする。結局、分離した記事番号でソ フィールドを 1 っ飛ばして、数字のフィールドに対して sort 十 1 -n ュースグループと記事番号を分離する。 文字列の前に空白を入れる。つまり、この sed コマンド tl . in のなかで、、、 . 〃から行末まで数字か髞返されている ートすることになる。 UNIX MAGAZINE 1990.9 〃に置き換える。 alt . sources .55 comp. archives. 12 まい、最初に期待したとおりの結果が得られません。 しかし、このコマンドの実行結果は次のようになってし 空白を 、ゝしかし、こでは最後についている数字列を数値とみな し、それを基準に降順あるいは昇順に並べ替えてはしいわ 問題 しようか。 ループごと、 さて、 けです。 値扱いでソーティングして出力するにはどうすればよいで さらに同しニュースグループ内では番号を数 のようにソーティングされたリストを入力し、ニュースグ こで 1 っ間題が提起されました。つまり、上記 覧が入っているファイルを、、 tl . in 〃とし、テスト用の入力 のです。ここで説明を簡単にするために、前例のような一 ムを別フィールドにして数値としてソートする、というも このコマンド列の基本的なアイデアは、数字だけのカラ 次のような組合せが考えられます。 をパイプでつないで処理できそうな気がします。たとえは、 簡単に考えれは・、 sed と sort という UNIX のコマンド 解決方法 1 : sed と sort を使う comp ・ archives. 1188 comp ・ archives. 1171 comp ・ archives. 1124 comp ・ archives. 1107 comp ・ archives. 1093 comp ・ archives. 1012 comp. archives. 1005 alt . sources .762 alt . sources .667 comp ・ archives. 118 comp ・ archives. 110 ファイルとします。 そこで AWK の登場です。 AWK でプログラミングして ープ内でのみおこなわれるようにしなければなりません。 ュースグノレ 動作をさせるには、このソーティングが同しニ ファイルに対して作用してしまうためです。期待どおりの これはなぜかといいますと、 sort コマンドが発体の入力 基本的な考え方は次のようなもので、解決方法 1 と同し 解決方法 2 : GAWK を使う みましよう。 95