68user's page 掲示板

Prev< No. 4824〜4836> Next  [最新発言に戻る] [過去ログ一覧]
No. 4824 # べた 2007/08/09 (木) 15:50:10
>>68user
ありがとうございます。

>% sh -x スクリプト名
で確認してみました。
DAYとDATEは誤記ですが、DAYに直しましたが結果は同じでした。

awk -v DAY=$DATE'/^DAY/,/\\r/ {print $0}' ${LOG_FILE}
パターンマッチングのところが、引数で渡した値ではなく、
”DAY”という文字列でした。(文字列と言い切れるのかどうか。?)

No. 4825 # 68user 2007/08/10 (金) 11:48:35
>>4824 べた
まずはコマンドラインから awk を叩いて、正しい結果を取得できるように
なるところから始めましょう。シェルスクリプトはその後。

あと
>>4822 68user
> 具体的には以下の問題があります。
を直さないと動きません。念のため。

No. 4826 # べた 2007/08/10 (金) 15:37:58
>>4825 68user

色々とありがとうございます。
試してみます。

No. 4827 # べた 2007/08/10 (金) 16:38:59
>>4825 68user

やはり、「^」を指定しているので、行の先頭が、DAYという
文字列から始まっているのを探していました。
試しにファイルの方を修正し、日付を「DAY Aug 2」としたところ
表示されました。
マッチングのところに、変数を展開できないのでしょうか。

nawk -v DAY="Fri Aug 10" '/^DAY/,/\\r\\n/ {print $0}' /tmp/kekka_log.log

No. 4828 # なし 2007/08/13 (月) 21:52:22
>>4822 68user

返事遅れてすみません。
ありがとうございます。

No. 4829 # 68user 2007/08/15 (水) 10:31:38
>>4827 べた
変数展開は $n ~ VAR と書きます。

で、/\\r\\n/ ですが、これうまく動きますか? awk はよくわかりませんが、
マッチしてないと思います。

なので、DAY から ------ までを見るようにして、
    awk -v DAY="Fri Aug 10" '$0 ~ DAY,/^--*$/ {print}'

    awk -v DAY="Fri Aug 10" 'BEGIN{skip=1} $0 ~ DAY {skip=1;print $0} /^--*$/ {skip=0} skip==1 {print} '
あたりがいいんじゃないですかね。

なお、行頭の日付だけ見るなら、DAY="^Fri Aug 10" です。

No. 4830 # 通りすがり 2007/08/15 (水) 10:44:32
「リダイレクト」についての説明の中の

『「リダイレクトは右に書いたものから順に評価されるから」は間違いである。』

のくだりが分かりやすくてつい書き込んでしまいました。
他のサイトは上記のような説明で終わっている所があったのですが、
なんとなく「ん?」と違和感が残ってました。
で、このサイトの内容ですっきりです。ありがとうございました。
ドメインも素敵です(笑)

No. 4831 # 68user 2007/08/15 (水) 11:36:41
>>4830 通りすがり
ありがとうございます。ついでなので書いておくと、先頭に書いてもいいです。
    >/dev/null 2>&1 ls foo.txt

No. 4832 # べた 2007/08/15 (水) 15:00:06
>>4829 68user
ありがとうございます。

変数の展開ができました。
「'$0 ~ DAY」
の使い方は知りませんでした。

>で、/\\r\\n/ ですが、これうまく動きますか? awk はよくわかりませんが、
>マッチしてないと思います。
ファイルの最後まで見るというつもりでした。
EOFがこの表記でいいのかさなかですが。?
多分、ファイルの最後まで走査し、終了しているのではないかと。

>awk -v DAY="Fri Aug 10" 'BEGIN{skip=1} $0 ~ DAY {skip=1;print $0} /^--*$/ {skip=0} skip==1 {print} '
日付が二行でます。

Fri Aug 10 ・・・
Fri Aug 10 ・・・
****
****
****
Fri Aug 10 ・・・
Fri Aug 10 ・・・

見たいになります。

No. 4833 # 68user 2007/08/15 (水) 17:15:01
>>4832 べた
> ファイルの最後まで見るというつもりでした。
その挙動でよいのであれば、問題ないと思います (実質機能していないと
思うので、書き方としてはまずいですが)。

> 日付が二行でます。
print $0 を削除するなどしてください。

No. 4834 # べた 2007/08/31 (金) 16:07:37
>>4833 68user
お礼遅れてすみません。
ありがとうございました。

No. 4836 # べた 2007/09/27 (木) 10:05:21
前にも同じ質問をしたのですが、
findの検索で、指定ディレクトリ(カレントディレクトリ)内の
ファイルだけを検索し、-mtimeを指定して、30日前のファイルを
削除しようとしています。

配下のディレクトリを検索しないよう、-prune を指定して、まずは、
以下のようにしたのですが、”*.csv”以外が表示されていまいます。

find /home/DATA/backup -name '*.csv' -o -name everyday -prune -o -name monthly -prune -o -name tmp -prune -o -name work -prune -o -print
と実行すると、
カレントディレクトリと、「*.csv」以外のファイルが表示されます。

find /home/DATA/backup -name '*.csv' -o -name everyday -prune -o -name monthly -prune -o -name tmp -prune -o -name work -prune -o -mtime +30
と実行すると、
表示されるのですが、どこのディレクトリを検査した結果かわからない状態でして、

確認と実際は、rm を指定してファイルを削除するで、「-exec ls -l {} \;」
をして表示してみたのですが、
find /home/DATA/backup -name '*.csv' -o -name everyday -prune -o -name monthly -prune -o -name tmp -prune -o -name work -prune -o -mtime +30 -exec ls -l {} \;
と実行すると、
何も表示されません。

find /home/DATA/backup -name '*.csv' -o -name everyday -prune -o -name monthly -prune -o -name tmp -prune -o -name work -prune -o -mtime +30 -print
と実行すると、
何も表示されません。

正しく、結果が表示されるように、
最終的には、30日前とか、90日前のファイルが削除できるように
したいのですが、どのようにすればよいか、
教えてください。

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