68user's page 掲示板

Prev< No. 4491〜4496> Next  [最新発言に戻る] [過去ログ一覧]
No. 4491 # 68user 2006/01/23 (月) 16:08:33
>>4489 take
> DH鍵交換の実装方法がなかなか調べても分からない状況です。
わたしにもさっぱりわかりませんが、以下の URL はチェック済ですか?
    http://www.openssl.org/docs/crypto/dh.html
    http://matagi.sakura.ne.jp/mt/archives/2005/03/openssldh.html

No. 4492 # take 2006/01/24 (火) 13:52:18
>>4491 68user
>わたしにもさっぱりわかりませんが、以下の URL はチェック済ですか?
> http://www.openssl.org/docs/crypto/dh.html
> http://matagi.sakura.ne.jp/mt/archives/2005/03/openssldh.html

お返事ありがとうございます。

DH法用の関数はこれなんですね。
お教え頂いた情報を参考に、更に調べてまいります。

No. 4493 # 2006/02/02 (木) 13:06:23
シェルスクリプトで、
ファイルからフィールド1を読み込み、前後にシングルクォーテーション「'」を
付けて、区切りの1行にしたいのですが、「'」を上手く付けることができません。
「'」の使い方が不正とかで怒られます。

#!/bin/csh

nawk -F"," ' { \
  if (FNR==1) printf("\'%s\'", $1); \
  else printf(",\'%s\'", $1) \
}' file.txt

一度、ダブルクォーテーション「"」にしてからsedで置換しよとしたのですが、
sedでも「'」の使い方が不正とかで怒られます。

nawk -F"," ' { \\
  if (FNR==1) printf("\"%s\"", $1); \\
  else printf(",\"%s\"", $1) \\
}' file.txt | sed 's/"/\'/g'

または、

set a = `nawk -F"," ' { \\
  if (FNR==1) printf("\"%s\"", $1); \\
  else printf(",\"%s\"", $1) \\
}' file.txt`
echo $a | sed 's/"/\'/g'

どのようにすればよいのですか。

OSは、Solairs8

No. 4494 # 2006/02/02 (木) 13:08:17
>>4493
参照するファイルについて書いていませんでした。
# cat file.txt
Tokyo,
Oosaka,
Nagoya,
Kyoto,
Kyusyu,

No. 4495 # 68user 2006/02/02 (木) 14:04:20
>>4493
csh は馬鹿なので、シングルクォートの中にシングルクォートを書くことはできません。
つまり、
    echo '\''
はエラーです (sh も同様)。同様に
    echo "\""
もエラーになります (sh ならこっちは OK)。

で、csh には (sh も)
        echo "文字列1""文字列2""文字列3"
        echo "文字列1"文字列2"文字列3"
        echo '文字列1''文字列2''文字列3'
        echo '文字列1'文字列2'文字列3'
のいずれも、
        echo "文字列1文字列2文字列3"
と (基本的には) 同じ、という性質があります。

よって、csh で
    'abcdef'
を出力したい場合は、
    echo "'"abcdef"'"
    echo "'""abcdef""'"
などとします。

シェルのクォートは「ネストさせない」が鉄則です。

No. 4496 # 2006/02/03 (金) 15:40:28
>> 4495
無理なのですか。

一度、ファイルから取得したものループでechoコマンドを
使いながら編集するということですね。

#!/bin/csh

set ALL="Tokyo Oosaka Nagoya Kyoto"

@ i = 1
foreach EACH ($ALL)

        if ($i == 1) then
                set ALLS=`echo "'"$EACH"'"`
        else
                set ALLS=`echo $ALLS",'"$EACH"'"`
        endif
        @ i++
end
echo $ALLS

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