68user's page 掲示板

Prev< No. 3936〜3939> Next  [最新発言に戻る] [過去ログ一覧]
No. 3936 # 一人 2004/08/23 (月) 21:39:37
以下のカンマで区切られたデータをフィールド1をキーにして、フィールド3を
1行に編集しようとしたのですが、処理が終了してくれません。
無限ループの状態になってしまいます。

上手くファイルの終了を判断していません。
ファイルの終わり(EOF)を判断するにはどうしたらできますか。


--データ--------------
A001,商品番号,0001
A001,商品番号,0002
A001,商品番号,0003
A002,商品番号,0001
    :
    :
Annn,商品番号,0001
Annn,商品番号.0002

--結果--------------------
A001,0001,0002,0003
A002,0001
    :
    :
Annn,0001,0002

----------------------------------
#!/bin/sh
#

SORT_FILE="/tmp/sort_csv.log"
OUT_FILE="/tmp/kekka.log"

rm ${OUT_FILE}* > /dev/null 2>&1

echo "*** start ***"

awk -v OUT=${OUT_FILE} -F"," '
BEGIN {
                count = 0+0 ;
                output=sprintf("%s",OUT) ;
        }
function edit_proc() {
        cnt = 0+1 ;
        dumy = $1 ;
        printf("%s",$1) >> output ;

        while( NF>0 ) {
                if (dumy != $1) {
                        printf("\n") >> output ;
                        dumy = $1 ;
                        printf("%s",$1) >> output ;
                        cnt++ ;
                }
                printf(",%s",$3) >> output ;
                getline ;
        }
        printf("\n") >> output ;
        return cnt ;
}
{
        count=edit_proc() ;
}
END {
        close(output) ;
        printf("syori count [ %d ] ken\n",count) ;
}' ${SORT_FILE}

echo "*** end ***"

No. 3937 # ネットワーク1年生_forMERCYさま 2004/08/24 (火) 00:31:19
>>3931 MERCY
MERCYさま。ご回答有り難うございます。お礼が遅くなってごめんなさい。
これからもその他、下らないことで質問すると思われますので、
是非とも宜しくお願い致します。
有り難うございました。

No. 3938 # ネットワーク1年生_for68userさま 2004/08/24 (火) 00:49:40
>>3926 68user
管理者さま。大変お世話になっております。
くだらない質問にも、いつも一番にご回答下さり大変嬉しいです。
本当に有り難うございます。

>> CSMA/CDの他、CSMA/CA、ホットポテトルーティング、近隣探索機能(v6)
>CSMA/CD・CSMA/CA は近いという概念とはまったく関係なく、LAN 内での
>コリジョンを防止するための仕組みだと思っています。

はい。まさにその通りでした。。
課題を出した上司はNWがどの様に通信しているのかを勉強させたく、
CSMA/CD・CSMA/CAの課題を持ち出したものでした。
コリジョン防止がNW内通信の速さだと思っていた先輩が誤って、
「NW内の近さ」と関連付けアドバイスしてくれたものですから混乱してました。

「UNIXと言うものが、サーバ向が主体」とどこかで思っているので、
こちらでNWの質問までしてしまって申し訳けございませんでした。
とにかく本当に有り難うございました!

No. 3939 # カトウ [E-mail] 2004/08/24 (火) 10:04:33
はじめまして。
よろしくお願いいたします。

現在HP-UX11.00、Bシェルでログの監視ツールを作っています。

早速質問させていただきたいのですが、
たとえば、以下のようなログがあったとします。
------------------------------------------
1:I have a error. You have a worning.
2:I have a worning. You have a error.
------------------------------------------

変数にワイルドカードを使用して
------------------------------------------
pattern="*error*worning*"
------------------------------------------
とパターン定義しておいて、ログファイルを一行ずつ読み込み
この場合ですと、一行目のみ出力させるということは可能でしょうか?

現在
------------------------------------------
message=`echo $line | sed -n /$pattern/p`
if [ "x$message" = "x" ] ; then
        exit 0
else
        echo $message
        exit 1
fi
#($lineはログファイルの読み取り行)
------------------------------------------
というようなことが、やりたいのですが、うまくいきません。


ご教授のほどお願いいたします。

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