68user's page 掲示板

Prev< No. 3510〜3514> Next  [最新発言に戻る] [過去ログ一覧]
No. 3510 # zsh 2004/01/11 (日) 14:43:24
>>3509 68user
フォローありがとうございます。

>>3508 ブラウン
>ファイルの総行数を取得して、読み込んだ行数と比較するかと思う
>のですが。
それは以前提示したスクリプトの方法ですが、
それだと最終行かどうかの判断であり、EOFかどうかの判断ではありません。

>>或いは行数+フィールド番号でファイルの最後をチェックするとか
>ちなみにどうするのですか。
あまり意味のない方法ですので、気にしない方が良いと思います。

No. 3511 # ブラウン 2004/01/14 (水) 12:42:42
シェルについて2点教えて下さい。
1.フィールドの区切がカンマ「,」となっている行から
    例えば、
    山田 太郎,ヤマタ゛ タロウ,Yamda Taro,18,1760/12/24
    山田 花子,ヤマタ゛ ハナコ,Yamda HANAKO,18,1760/12/24
    から、
    先頭のフィールドかあとか、 フィールドの3,4,5を取り出したいのです
    が、awkを使う以外にないのでしょうか。

2.シェルで、今日から10日前の日付を取得することはできるのでしょうか

環境は、HP-UX11.00、Bシェルです。

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 3512 # ブラウン 2004/01/14 (水) 12:45:26
>>3511 ブラウン
シェルについて2点教えて下さい。
1.フィールドの区切がカンマ「,」となっている行から
        例えば、
        山田 太郎,ヤマタ゛ タロウ,Yamda Taro,18,1760/12/24
        山田 花子,ヤマタ゛ ハナコ,Yamda HANAKO,18,1760/12/24
        から、
        先頭のフィールドから順にとか、フィールドの3,4,5を取り出したい
        のですが、awkを使う以外にないのでしょうか。
        awkを使わないで出来る方法と、awkを使ってできる方法を教えて
        下さい。

2.シェルで、今日から10日前の日付や、指定した日付の10日前を
    取得することはできるのでしょうか

環境は、HP-UX11.00、Bシェルです。

No. 3513 # 68user 2004/01/14 (水) 13:09:06
>>3511 ブラウン
質問したら必ず結果を書いてください。
      http://x68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?howtouse

No. 3514 # hanzen 2004/01/14 (水) 21:57:22
賢いやり方か、上手いやり方か分からないが
こうすればできる。

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

back_to_day() {
        case $MM in
            0)
                MM=12
                MAX=31
                ;;
            1|3|5|7|8|10)
                MAX=31
                ;;
            4|6|9|11)
                MAX=30
                ;;
            2)
                if [ `expr $YYYY % 4` -eq 0 ]; then
                    MAX=29
                else
                    MAX=28
                fi
                ;;
        esac
}

YYYY=`echo $1 | cut -c1-4`
MM=`echo $1 | cut -c5-6`
DD=`echo $1 | cut -c7-`

DD=$((DD-7))
if [ ${DD} -le 0 ] ; then
        MM=$((MM-1))
        if [ ${MM} -eq 0 ] ; then
                YYYY=$((YYYY-1))
                back_to_day
                DD=$((DD*-1))
                DD=$((MAX-DD))
        fi
fi

printf "%d%02d%02d\n" $YYYY $MM $DD

exit 0

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