アプリ版:「スタンプのみでお礼する」機能のリリースについて

数百MBの1つのログファイルがあります。
これを月ごとのファイルに分割しようと思ってます。
大きすぎて既存環境のviでは開けないので、コマンドやスクリプトで分割しようと考えてます。
とりあえず今年の3月(Mar)~7月(Jul)と5つ月ファイルに分割できればいいです。

perlで1行ずつチェックしようかと思ってましたが、
間違いなくもっと簡単に処理できるかと思い投稿しました ^ ^;;
シェルはcshです。
よろしくお願いいたします。

A 回答 (4件)

>ログの内容によりますが、日付以外に「Mar」とかの文字列があったら


>まずいかなぁと思ってます。
>なので、頭からxx~xx文字目が「Mar」だったらみたいなことが出来たらいいかと
>考えてます。
>grepでそのようなことは出来るのでしょうか?

もちろん正規表現が使えます。

●行の先頭がMayで始まる行
 grep '^May' ログファイル > 3月のログ

●行の先頭から五文字目からMayがある行
 grep '^....May' ログファイル > 3月のログ

^ (チルダ)は行の先頭を意味します。
. (ドット)は任意の一文字を意味します。

正規表現はほかにもたくさんあります。ぜひいろいろ
試してみて修得してください。

この回答への補足

無事できました!
みなさん、ありがとうございました!

補足日時:2002/08/19 13:29
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

正規表現ですね。
調べたら...なるほど使えるものがたくさんありました!
これで実現できそうです。

お礼日時:2002/08/19 13:19

私もAns.#1さんの答えを書こうとしました。


単にviで開けるサイズにしたいのなら
もっとずっと簡単な手(コマンド一発)もあります。

% split -行数 ファイル名

この回答への補足

アドバイスありがとうございます。

実はこれまでsplitしてviで編集してました。
さすがにつかれました。^ ^;;
なので、応用のきくスクリプトorコマンド がないかなぁと思った次第です。

補足日時:2002/08/19 12:56
    • good
    • 0

viで処理出来ない程のファイルは、sedで処理します。



記憶が定かでは無いのですが、
 sed s/文字列/ ファイル名
で文字列が一致する行を表示した記憶があります。(ファイルに落とす時はリダイレクトします)

くれぐれもうろ覚えなので、man sedでパラメータを確認して下さい。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

#1の補足のとおり、日付部分のみのマッチングを行いたいです。
日付が一番始めにくるので、マッチング処理の順番が指定できればできるのですが...。
manで調べてみます。

お礼日時:2002/08/19 13:08

とりあえず、手っ取り早いのはgrepを使う事でしょう。



grep Mar ログファイル名 > 3月のログ
grep Apr ログファイル名 > 4月のログ
grep May ログファイル名 > 5月のログ
grep Jun ログファイル名 > 6月のログ
grep Jul ログファイル名 > 7月のログ

grep 検索文字列 ファイル名 > 出力ファイル名
こんな感じです。

この回答への補足

ご回答ありがとうございます!

やっぱりgrepでしょうか。
ログの内容によりますが、日付以外に「Mar」とかの文字列があったら
まずいかなぁと思ってます。
なので、頭からxx~xx文字目が「Mar」だったらみたいなことが出来たらいいかと
考えてます。
grepでそのようなことは出来るのでしょうか?

補足日時:2002/08/19 12:55
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!