|
>>3618 68user 参考にさせていただきます。 実機の搬入が来週なので、結果報告はその時にします。 |
|
>>3616 68user 現在expectで対応する方向で準備中です。 ありがとうございました。 |
|
度々申し訳ございません。 今度はkshで教えてください。 ======= test_file ======== aix4-r1 aix4-r2 aix4-r3 aix4-r4 aix3-r1 aix3-r2 aix3-r3 aix3-r4 aix2-r1 aix2-r2 aix2-r3 aix2-r4 ======= test.ksh ======== #!/usr/bin/ksh file="test_file" nawk '{ if ( (substr($0,1,4) == "aix4") )\ {\ printf "TRUE:%s\n",$0; \ }\ else {\ printf "FALSE:%s\n",$0; \ }\ }' $file 上記の様に文字列の先頭数文字のみを見て一致するかの判定を行いたいのですが、ksh単体での実現方法が分からず苦労しています。 やはり、上に示したようにawkを使用して、その中でsubstr関数を使用するしかないでしょうか? 本当に基本的なことで申し訳ございませんが、よろしくお願い致します。 |
|
>>3621 バンガード こんな感じですかね。 while read line; do prefix=${line%-r[0-9]} if [ "$prefix" = "aix4" ]; then echo "TRUE:$line" else echo "FALSE:$line" fi done < test_file |
|
>>3622 68user > prefix=${line%-r[0-9]} > if [ "$prefix" = "aix4" ]; then これだと、私が例で示させていただいたパターンにしか対応できませんよね。(そういう意味では私の示した例が悪かったですね) これを「aix4-r23,aix-r4x3」なども「一致」と見るような方法は無いでしょうか? たとえば、以下のようなif文は無理でしょうか? if [ $line = "aix4"* ]; then |
|
>>3623 バンガード > 「aix4-r23,aix-r4x3」なども「一致」と見るような方法は無いでしょうか? > if [ $line = "aix4"* ]; then aix4* では aix-r4x3 はマッチしないように見えますが、 またしても不適切な例ではありませんか? > if [ $line = "aix4"* ]; then if ではできませんが、case ならできます。 while read line; do case $line in aix4*) echo aix4 ;; aix5*) echo aix5 ;; *) echo others ;; esac done < test_file |