68user's page 掲示板

Prev< No. 1429〜1445> Next  [最新発言に戻る] [過去ログ一覧]
No. 1429 # AkiAki 2000/12/05 (火) 21:39:29
No.1428の修正です
申し訳ありません、サンプルファイルのスペースがおかしく
なってました再送させていただきます。
<Input File1>____<Input File2>____<<Output File>>
X01________________X01________________X025
X02________________X02________________X03
X03________________X025_______________X04
X04________________X07________________X05
X05________________X08________________X06
X06________________X099_______________X099
X07___________________________________X09
X08___________________________________X10
X09
X10


Input File1の文字列と Input File2の文字列の比較をします
結果としてOutputFileの出力を得たいのですが...

条件(雑でスミマセン)
      InputFile1の文字列が InputFile2の各文字列と一致する=出力しない
      InputFile1の文字列が InputFile2の各文字列と一致しない=出力する
                        このケースでは    
                                                        InputFile1だけに存在する文字列
                                                        InputFile2だけに存在する文字列 
                        がありますが
                        InputFile2内の文字列を優先し... 以下例文です
                        InputFile1の”X02"を比較するとき InputFile2”X02”
                                         は一致している => 出力しない
                次のInputFile1の文字列”X03”を比較するとInputFile2の”
                                        次行”である”X025"は一致していない (※)
                                                    => 025
                                                              X03
    の様にInputFile2の文字列”X025"を出力後InputFile1の”X03”を出力
      InPutFile1の”X04 - X06"はInputFile2に含まれない =>そのまま出力
                                    "X07 - X08"は双方含まれるので出力しない
                                        X09 の処理は(※)と同様に
                                                    =>X099
                                                            X09
            の順で出力します(数としての比較ではありません)
                X10はInputFile2に含まれない =>そのまま出力


(AWK本も2冊買い込み(良い参照本があったら紹介願います)さらに同種質問の過去ログ”No. 1342”を参考(goo の"awk"検索でやっとこのHPにたどり着きました...)に考えてみたのですがどうしてもうまく作成出来ませんでした、AWK使いの方々:どうぞ宜しくお願いいたします)

No. 1430 # 68user 2000/12/05 (火) 22:09:00
そもそも
> ヘルスチェック
という言葉を初めて聞いたのですが (health check?)、文脈
からして正しく通信ができているかどうか調べ、一定時間
正常な反応がないならエラーにするという意味でいいですか?

目的にもよりますが、
    1. サーバマシンが生きていて、network reachable かどうかを
          調べるなら定期的に ping を打つ
    2. TCP スタックが生きていることがわかればいいなら、定期的に
          echo サーバに接続。
    3. サーバソフトウェアが生きていることを確認するなら、NOP の
          ような何も処理をせず返事を返すだけのプロトコルを実装し、
          それを使って定期的に確認。
    4. 該当スレッドが生きていることを確認するなら、select や
          alarm でタイムアウト処理をして、一定時間反応がなければ
          エラー、という処理をする。
ってなところです。どれがお望みですか? 当然 1 が簡単
ですが、信頼性のあるのは 4 ですね。


全然関係ないところに反応するのもアレですが
> AWKを使用した2つのファイルの文字列比較について
おお、化けてる。しかも元データは…
    http://X68000.startshop.co.jp/~68user/tmp/01428
    http://X68000.startshop.co.jp/~68user/tmp/01429
正しそう。掲示板のバグですね。どこらへんだろう。

さて、本題は…今日は体力の限界に達したので…また後程。
朝起きたら誰か親切な人が答えてくれてるといいなと思いつつ、
おやすみなさい。

# 気になるのは Input File1 と Input File2 の内容は、文字列
# としてソートされていることが保証されているか、ってとこ
# ですか。されているなら簡単。されていないなら…それでも
# そんなめんどくさいことじゃないかも。

No. 1431 # 68user 2000/12/05 (火) 22:34:32
ほうぼうで話題になってるのでご存知の方も多いでしょうが、FYI。
    WXG for Linux/FreeBSD http://www.ekotoba.com/
フリーソフトです。Canna プロトコルをしゃべりますので、
クライアント側の環境設定は必要ありません。

入れ換えるには cannaserver を殺して、/tmp の.iroha-unix や
.ki2-unix (kinput2 を使っている場合) を削除し、wxgserver を
実行するだけです。で、どれくらい賢いかと言うと…(fj で見かけた
ネタですが)、
    cannaserver
        貴社の貴社が貴社で帰社した。 (問題外)
        帰社で帰社したのは帰社の帰社です (ここまでダメだとすがすがしい)
    MSIME
        貴社の記者が汽車で帰社した。(正しい)
        汽車で帰社したのは記者の記者です。(まぁ惜しいか)
    WXG
        貴社の記者が汽車で帰社した。(正しい)
        汽車で帰社したのは貴社の記者です。(正しい)

うーん、すばらしい。まだバグっぽい誤変換もありますし、
単語登録に問題アリですが、十分実用に使えます。

A.I.SOFT に感謝しつつ、周りの環境を片っ端から WXG に
replace 中。

No. 1432 # KomadaDa [E-mail] 2000/12/06 (水) 12:14:56
No.1425,1426のアドバイスありがとうございます.
i = 0,1,2,,,100
display[i] = XtOpenDisplay(context2, NULL, NULL, "TestApp", NULL, 0, &argc, argv);
とコード化しているのですが,forで回しても,どうも同じwindowが
何度も開いている様です.第1引数が悪いのでしょうか.
もう一度だけお願いします.

No. 1433 # hayata 2000/12/06 (水) 14:12:12
traceroute.cgiを期待をかけてダウンロードさせていただきました。
なかなか上手く動かないので書き込みに参りました。
上記CGIと、environment.plもFTPしましてディレクトリも変更しました。
ところがscript Errで動きません。Redhat6.2では利用できないのでしょうか?
それともDNSやDHCP等が関係して出来ないのでしょうか?
恐らく初心者の私の待ちがいとは思いますが、ご指導宜しくお願いいたします。

No. 1434 # kei 2000/12/06 (水) 19:53:38
HP−UXでメモリ内のデータをソートしたいのですが、
サイズが大きいため無理なのかなと思っています。
sortコマンドではどれくらいの件数をソート出来るか
知っている方いませんか?

No. 1435 # mm 2000/12/06 (水) 21:39:41
> AWKを使用した2つのファイルの文字列比較について
diffの出力をawkで加工、ってのじゃダメなのかな?

No. 1436 # gixs 2000/12/06 (水) 21:54:18
> No.1425,1426のアドバイスありがとうございます.
全然通じていないような・・・
Displayを複数オープンする必要はありません。

100のXサーバと接続するクライアントには応用できるので、一応書いてみました。
XtAppContextは内部で複数のディスプレイ接続に対応していますね。
しかし、あくまで、複数のXサーバと接続するクライアントの為の仕組みであって、ひとつのXサーバ相手に、複数のディスプレイ接続は無意味です。

#include <X11/Intrinsic.h>
#include <X11/StringDefs.h>
#include <X11/Shell.h>

int main(int argc, char **argv)
{
    XtAppContext ac;
    Display *dpy[100];/* ridiculous example */
    Widget w[100];
    Arg arg[2];
    int i;
    char title[64];

    /* Xt initialization */
    XtToolkitInitialize();
    ac = XtCreateApplicationContext();
    XtSetLanguageProc(NULL, NULL, NULL);

    XtSetArg(arg[0], XtNwidth, 100);
    XtSetArg(arg[1], XtNheight, 100);
    for (i = 0; i < 100; i++) {
        /* ridiculous example */
        dpy[i] = XtOpenDisplay(ac, NULL, NULL, "TestApp", NULL, 0, &argc, argv);
        sprintf(title, "%d", i);
        w[i] = XtAppCreateShell(title, "TestApp", applicationShellWidgetClass, dpy[i], arg, 2);
        XtRealizeWidget(w[i]);
    }
    
        XtAppMainLoop(ac);
}

No. 1437 # skel.103M [E-mail] 2000/12/07 (木) 20:49:07
#68user氏ではないですが。

@hayataさん
traceroute.cgiについて。
私自身 perl をやり始めたばかりなんでアレかのしれませんが、
・perlが存在するパスは?
        確認方法は「which perl」を実行したときの出力を見ることです。これ
        が「/usr/local/bin/perl」でなければ、perlが別のパスにインストール
        されているか、そもそもインストールされていない可能性があります。
        インストールされていない場合は実行不可能ですが、別のパスが出力
        された場合は、このスクリプト(traceroute.cgiとenvironment.plの両方)の
        最初の行
            #!/usr/local/bin/perl
        を修正する必要があります。例えば、「/usr/local/perl5/bin/perl」と表示
        された場合は、
            #!/usr/local/perl5/bin/perl
        とします。
・tracerouteが存在するパスは?
        確認方法は perl の場合と同様、「which traceroute」を実行したときの
        出力を見ることです。これが「/usr/sbin/traceroute」でなければ、ダウン
        ロードした environment.pl の
            $traceroute = "/usr/sbin/traceroute";
        という部分を修正する必要があります。例えば、「/bin/traceroute」と
        表示された場合は、
            $traceroute = "/bin/traceroute";
        とします。
の2つをとりあえず指摘させていただきます。これ以外にも原因が考えられる
でしょうが、少なくともこの2つを確認し、しかるべき対処をしないと実行
できませんので。

あと、このスクリプトは、*これを実行したホスト*と指定されたホストの間の
ネットワークのつながりを調べますので、
        http://X68000.startshop.co.jp/~68user/Cgi-room/
から直接実行した場合とでは出力結果が異なります。

@68userさん
traceroute.cgiで気づいたのですが、
        http://X68000.startshop.co.jp/~68user/Cgi-room/
の「www.cs.gunma-u.ac.jpと指定のホストの間の」は誤りで、正しくは
「X68000.startshop.co.jp」ではないでしょうか。

それでは。

No. 1438 # lb 2000/12/08 (金) 00:05:19
はじめまして。lbと申します。
>AkiAkiさんへ
inputfile1, 2ともあのようにソートしてあるならば、

comm -3 inputfile1 inputfile2 | sed 's/[[:space:]]*//g'

で近い出力が得られるのではないでしょうか。awk じゃなくて
すみませんが、ようするにカラムの間の space を削除すると
いうことです。[:space:]という書き方がサポートされていない
場合は s/▲*//g にしてみてください。▲は キーボードのスペ
ース の入力です。

No. 1439 # skel.103M [E-mail] 2000/12/08 (金) 03:20:32
どうも、skel.103Mです。

No.1437の
> @68userさん
> traceroute.cgiで気づいたのですが、
> http://X68000.startshop.co.jp/~68user/Cgi-room/
> の「www.cs.gunma-u.ac.jpと指定のホストの間の」は誤りで、正しくは
> 「X68000.startshop.co.jp」ではないでしょうか。
は、正しくは
----------
@68userさん
traceroute.cgiで気づいたのですが、
                http://X68000.startshop.co.jp/~68user/Cgi-room/
の「www.cs.gunma-u.ac.jpと指定のホストの間の」は誤りで、正しくは
「X68000.startshop.co.jpと指定のホストの間の」ではないでしょうか。
----------
ですね。ミスしてしまいました、申し訳ないです m(__)m

No. 1440 # komadaDa [E-mail] 2000/12/08 (金) 11:30:10
No.1436
Display *dpy[100]; -> Display *dpy; に修正しました.
わざわざコードまで,書いてもらってありがとう.
参考にさせてもらいます.

No. 1441 # merry 2000/12/08 (金) 18:31:01
こんにちは。

apacheのアクセスログのバックアップファイルを
作成したいと思ってます。
cpでファイルを作成しているときに
アクセスログに書かれたログは、
反映されるものなのでしょうか?
知っている方がいらしたら教えていただけませんか?
よろしくお願いします。

No. 1442 # AkiAki 2000/12/09 (土) 00:26:00
1438,1435アドバイスありがとうございます。
結果がこの結果になれば "awk"にはこだわってません
(”perlが良いんじゃないか”とか会社の周りの連中は言ってますが..)
●diff を awkで加工... 
●comm (Unix歴は長かったつもりですが...こんなコマンドがあったんですね)
来週早々会社のマシンでトライしてみます

No. 1443 # atom 2000/12/10 (日) 00:27:45
はじめまして。atomと申します。

教えて頂きたい事があります。
unixで特定の文字列を含むファイルを
特定の場所から検索するには
どのようにすればよいのでしょうか?
"unixの部屋"のgrepの説明で
grep −−− dir/* というのがありますが
これでよいのでしょうか。
どなたか、教えて下さい。
よろしくお願いします。

No. 1444 # 68user 2000/12/10 (日) 01:42:59
> sortコマンドではどれくらいの件数をソート出来るか
> 知っている方いませんか?
適当なデータを作って、実験してみましょう。sort できる
限界までいったら、swap の状況を見つつ、sort のせいなのか
メモリが足りないのか見極めましょう。

> traceroute.cgiを期待をかけてダウンロードさせていただきました。
補足ですが、まずは web サーバのログを見ましょう。
perl -c traceroute.cgi で文法チェックしましょう。
CGI として動かすのはもっと後の話です。

> 正しくは「X68000.startshop.co.jpと指定のホストの間の」では
> ないでしょうか。
へい、その通りです。直します。

# が、CGI の小部屋は技術的に未熟だった頃 (今もたいした
# ことはないけど) のコンテンツなので、既にメンテナンス
# する気力をなくしております。暇を見付けて修正しておきます。

> grep −−− dir/* というのがありますがこれで
> よいのでしょうか。
それでよいです。他人に聞く前に自分で試してみましょう。
試してダメだったのなら、何をした結果どうなったか、
というのが第三者にわかるように質問しましょう。

> cpでファイルを作成しているときにアクセスログに
> 書かれたログは、反映されるものなのでしょうか?
試してませんが、恐らく反映されません。なので、
log を適当なタイミングで rotate して、古くなった
ログファイルをコピーするのがよいでしょう。

apache なら rotatelogs というコマンドが付属しています。

No. 1445 # rosegarden 2000/12/10 (日) 06:04:47
>ん、gzip で圧縮して送って、向こうで伸張できたのですか?
>なら最大ファイルサイズは関係なかったですね。

ファイルサイズですが、FreeBSD 4.1-RELEASE で 6GB 以上の報告も
あるようです。6GB のディスクを dd コマンドでファイル化した
なんて話がどこかで書いてありました(URI は失念しました)。

推測の域を出ませんが、2GB で引っかかったというので思い付いたのですが…。
まさかとは思いますが、singed int でファイルサイズを保持しているような
状況だとエラーが出るでしょうね。プログラムのバグかも知れません。

>grep −−− dir/* というのがありますが
>これでよいのでしょうか。

この質問は答えにくいですね。dir 以下のディレクトリツリーを
トラバースするのなら、これじゃ不足です。

find . -type f -exec grep PATTERN {} \;

ですかね。GNU grep 使っているのなら、

grep -r PATTERN *

でもすみます。ただし、シンボリックリンクがループしていると死にますね。

質問をみるとファイル名だけが表示されれば良いようにも読めるので、
そういった場合だと、

grep -rl PATTERN *

かな?

>適当なデータを作って、実験してみましょう。sort できる
>限界までいったら、swap の状況を見つつ、sort のせいなのか
>メモリが足りないのか見極めましょう。

GNU sort の場合 TMPDIR みていますね。ルートパーティションを
小さめにとっているシステム( 32MB とか 64MB )だと、メモリがあまっているのに
ファイルシステムがあふれたりして。256MB メモリのあるマシンで実験したら、
こんな感じです。

% la -alF
total 40330
-rw------- 1 root wheel 36666584 Dec 10 05:51 hoge

% sort hoge

/: write failed, file system is full
sort: write error: No space left on device

ちなみに、ルートパーティションは 64MB で、のこり 17 MB でした。

>perlが存在するパスは?

蛇足ですが、CGI スクリプトを win から binary mode で転送すると
パスが正しくてもアウトですね。一行目が

#!/usr/bin/perl^M

とかなりますから。^M って CR のことです。つまり
ascii の 0x0d

Prev< No. 1429〜1445> Next  [最新発言に戻る] [過去ログ一覧]