68user's page 掲示板

Prev< No. 3496〜3509> Next  [最新発言に戻る] [過去ログ一覧]
No. 3496 # ブラウン 2003/12/26 (金) 12:47:15
HP-UXでのawkについて質問なのですが、
awkを使用してファイルのENDを判断できるのですか。

例えば、
cat date.txt
aaa
aaa bbb
aaa bbb ccc

111
111 222
111 222 3333

とあった場合、

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

awk '
function sub() {
}
        getline ;
        処理省略
{
        if (NF == 0) next ;
        if (NF >= 1) sub() ;
        ※
}' data.txt
----------------------

※の場所でファイルのENDか判断したいのですができるのでしょうか。

No. 3497 # zsh 2003/12/29 (月) 09:51:28
>>3496 ブラウン
ファイルのENDというのが最後の行の事なのか
EOFの事なのか不明ですが、最終行であれば以下のように。
ちなみに環境はSolarisです。
------
#!/bin/sh

max_line=`wc -l $1 | awk '{ print $1 }'`
awk '{ print ;
              if ( NR == max_line ) printf "END\n" }' max_line=$max_line $1
------
行数を取得する為だけにawk使うのはどうかと思いますが。

No. 3498 # ポッしブル 2003/12/29 (月) 22:27:36
はじめましてです。C言語を勉強しているものです。
質問なんですが、ネットワークプログラミングで
チャットを使ったゲームみたいなものを作りたいなと思っておりまして、
具体的にチャットではサーバーがクライアント全員にメッセージを送る
形になりますが、このゲームではクライアントが
メッセージを送る人を選ぶことができるようにしたいのです。
たとえば会話しているのは5人いるけどそのうち3人に送ろうという
感じです。クライアント側で、全ユーザーの名前が表示され
その中から送る人を選ぶみたいなかんじのゲームなんですが。

チャットにおいて選んだユーザーにだけメッセージを送るというのは
一体どうすれば可能なのですか?

No. 3499 # ブラウン 2003/12/30 (火) 10:37:54
>>3497 zsh
ありがとうございます。

説明不足ですみません。
ファイルのENDというのは、最終行ではなく、EOFのことです。
また、行数を取得するためにawkを使用していません。
awkを使用して、ファイルから1レコードづつよみこみ条件
毎に処理を行い、EOFだったら終了と考えていたのですが。

No. 3500 # zsh 2003/12/31 (水) 13:11:47
>>3499 ブラウン
取得したいのがEOFだとすると
getlineの戻り値見るくらいしか思いつきません。
普通にENDに記述じゃダメですか?
或いは行数+フィールド番号でファイルの最後をチェックするとか。

>また、行数を取得するためにawkを使用していません。
すみません、行数を取得するためだけにawkを使うのはどうか
というのは自分に対して言ったものです。

No. 3501 # けんおお 2004/01/02 (金) 07:07:10
あけましておめでとうございます。
朝早くから失礼いたします。

このページは、EmacsLipsでネットワークプログラミングについて
ぐぐっていたら、たどり着きました。

早速一つ質問させてください。
telnetでウェブサーバからファイルを取ってこようとしたところ、
GET /hoge.rdf HTTP/1.0
で、404になってしまいます。ブラウザやwgetだと取ってこれます。
こういう場合は、どのようにすればいいのでしょうか?

# あと、私事で恐縮なのですが、SEGA BBSのログを発見したので、
# ためしに名前を入れてみたらおもいっきりヒットしました。(^_^;)
# いやー懐かしい。とにかく懐かしいです。(;_;)ホロホロ
# ちなみに、SEGA BBSのトップにあるsagabitoへのリンクって
#「くにおにく」さんのページですよね?
# 当時、「くにおにく」さんに大変世話になった記憶があります。
# 無事で過ごされているようでしたらなによりです。
# 以上、私事で失礼しました。

No. 3502 # けんおお 2004/01/03 (土) 00:30:54
>>3501 けんおお
すみません。自己解決しました。
GET /hoge.rdf HTTP/1.1
Host:hoge.jp
Connection:close
でいけました。
最近は、HTTP/1.0ではファイルを取ってこれなくなったんでしょうか?
それでは、失礼します。

No. 3503 # ShinoP 2004/01/05 (月) 10:20:47
はじめまして。
検索辿ってこちらを拝見させていただきました。

早速質問させていただきたいのですが、
SunのUltra10 SPARKマシンで、SunOSのデスクトップに
ファイルを配置するためにデスクトップの絶対パスを調べたいのですが、
Windowsのデスクトップのようにショートカットの絶対パスを辿ろうと
しても一向に見つかりません。

もしかしてSunOSのデスクトップ(ワークステーション?)上のショートカットは実体のない参照(リンク)でしかなくて、デスクトップの絶対パスなんてものは存在しない(ファイルを置くことはできない)のでしょうか。

よろしくご教示お願いします。

No. 3504 # 68user 2004/01/05 (月) 15:23:45
>>3498 ポッしブル
> チャットにおいて選んだユーザーにだけメッセージを送るというのは
> 一体どうすれば可能なのですか?
名前と IP アドレスの一覧のテーブルを内部に持っておいて、選択
された名前から対応する IP アドレスを得て、その IP アドレス宛に
メッセージを送信すれば可能でしょう。

要は、そういう動作をするように、あなたがプログラムを組まなく
てはならないということです。


>>3501 けんおお
>>3502 けんおお
GET /hoge.rdf HTTP/1.0 が 404 not found なのは、
バーチャルホストな web サーバだったからでしょう。
    http://x68000.startshop.co.jp/~68user/net/http-4.html
        さらなる改善点・バーチャルホストに対応
を読んでください。

HTTP/1.1 で OK だったのは、HTTP/1.1 だと Host ヘッダが
必須なため、結果的にバーチャルホストに対してホスト名を
提示することができたからだと思われます。

> # ちなみに、SEGA BBSのトップにあるsagabitoへのリンクって
> #「くにおにく」さんのページですよね?
そうです。でも今は公開されていないようですね。1年ほど前に
BBS があることは確認しましたが、今は見つけられません。


>>3503 ShinoP
CDE ですか? CDE をまともに使ったことはありませんが、
Solaris2.6+CDE 環境で試してみると、
    ~/.dt/Desktop/.!dtdesktop
    ~/.dt/sessions/current/.!dtdesktop
などのファイルに、リンク先のフルパスが保存されているような
気がします。

No. 3505 # ShinoP 2004/01/05 (月) 15:42:24
>>3504 68user
いえ、リンク先のフルパスが知りたいのではなく、目的は
「デスクトップ」自体の絶対パスを知りたい、ということです。
少々説明が足りませんでした。

その手段としてWindowsと同じ感覚でショートカットのリンク先ではなく
ショートカット自身の絶対パス
(Windows2000ならば
"C:\Documents and Settings\administrator\デスクトップ" で表されるような)
を調べようとしたのですが、
どうにも見つかりません。

これは現在疑ってる通り、ショートカット自体には実体がなく、
したがってデスクトップに実体ファイルを配置する、
ということは不可能だということなのでしょうか。

No. 3506 # 68user 2004/01/05 (月) 16:27:21
>>3505 ShinoP
そういうことであれば

> ショートカット自体には実体がなく、したがってデスクトップに
> 実体ファイルを配置する、ということは不可能
だと思います。

ただしわたしは CDE は常用しておらず、今回初めて CDE のヘルプを
見たくらいなので、間違っている可能性は多分にあります。

No. 3507 # ShinoP 2004/01/05 (月) 20:07:12
>>3506 68user
CDEのデスクトップショートカットはシンボリックリンクみたいなもの、
ということのようですね。
断念して代替パスを設定する方向で進めようと思います。
ありがとうございました。

No. 3508 # ブラウン 2004/01/06 (火) 02:26:13
>>3500 zsh
>取得したいのがEOFだとすると
>getlineの戻り値見るくらいしか思いつきません。
>普通にENDに記述じゃダメですか?
>或いは行数+フィールド番号でファイルの最後をチェックするとか
getlineの戻り値ですか。
ファイルの総行数を取得して、読み込んだ行数と比較するかと思う
のですが。

>或いは行数+フィールド番号でファイルの最後をチェックするとか
ちなみにどうするのですか。

>普通にENDに記述じゃダメですか。
とはどういう意味ですか。
ファイルの最後にENDを付けた様式ということですか。
それでしたら無理です。

No. 3509 # 68user 2004/01/06 (火) 22:54:37
>>3508 ブラウン
>> 普通にENDに記述じゃダメですか。
> とはどういう意味ですか。
    {
            行ごとの処理
    }
    END {
            終了時の処理
    }
という書き方ではどうか、ということでしょう。これは
awk の設計思想に沿った最も自然な書き方だと思います。

それがダメなのなら、わたしも getline の戻り値を
取るのがよいと思います。

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