• ベストアンサー

ログファイルの中から1行だけ削除。

cgiを使用してファイルの削除を行いたいのですが、***.htmlなどファイル単位で指定するものは できたのですが、logファイルの中にある、任意の1行だけを削除したい場合はどうしたらいいのでしょうか?

  • CGI
  • 回答数4
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • wolfwood
  • ベストアンサー率50% (199/398)
回答No.1

Perlではファイル内の位置を指定することが出来ません。 一度、配列にデータを入れてからその行の配列のみを削除して, その削除後の配列をもう一度ファイルに保存します。

KODAMAR
質問者

お礼

回答ありがとうございます。 ログファイルの中身全部を配列に。→その中から任意のものだけ削除→削除された後の残ったデータをログファイルへ戻す(上書き) というような流れでしょうか?

その他の回答 (3)

  • wolfwood
  • ベストアンサー率50% (199/398)
回答No.4

>こんなことしたら、メモリ不足になってしまいますよ。 データ量が多い場合はそうですね。 ただ、Perlでのファイルデータ操作の一般的な方法として説明しました。 掲示板などはこの方法を用いています。 データ量が多い場合はファイルの分割やデータベースの活用などの対策を講じた方が良いですね。

  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.3

>ログファイルの中身全部を配列 こんなことしたら、メモリ不足になってしまいますよ。 (ログファイルの大きさにもよるけど)

  • wolfwood
  • ベストアンサー率50% (199/398)
回答No.2

>ログファイルの中身全部を配列に。→その中から任意のものだけ削除→削除された後の残ったデータをログファイルへ戻す(上書き) その通りです。

関連するQ&A

  • ログファイルからキーワードを検出、何行目か返す。

    以前こちらでおなじような質問をして回答いただいたのですが、どうしても理解できないので再度質問させていただきます。 フォームで名前や件名などを入力してもらい、その入力データをログファイルへ入れます。 ログファイルは以下のような感じのものが何行も続いています。 NAME=hoge&TITLE=tatoeba&NAKAMI=konnnakanji&LOCALTIME=20030127094224= (LOCALTIMEだけは自動で入るようになっています。) その後で、このログファイルから任意の行を取り出したいのですが、削除されることもあるため○行目という値では意図するものが出てこない可能性もあるので、 LOCALTIMEで検索をしたいのです。 20030127094224と入れた場合、ログファイルの○行目、と判定するようなことをしたいのです。 どのようにしたらいいのかさっぱりわかりません。 よろしくお願いします。 #perlです。

    • ベストアンサー
    • CGI
  • 1行だけ削除。

    log.logというログファイルの中のデータから、 NAME=hoge&GROUP=hogehoge というような1行だけを削除する場合はどのようにしたらいいのでしょうか?

    • 締切済み
    • CGI
  • ログファイルを編集する方法はありませんか?

    cgiログファイルを読み出して下記の様に任意に行数を指定して入れ替える方法を教えていただければと思います。 何分、素人なので、その辺りを踏まえて教えていただければ助かります。また、サンプルの様なものがあればご参照お願い致しますm(__)m [例] 行数・内容 1************** 2////////////// 3++++++++++++++ 4-------------- 上記の状態のログファイルがあるとし、任意の行数、(例えば)「1」と「4」を入れ替えたい場合 行数・内容 1-------------- 2////////////// 3++++++++++++++ 4************** と保存しなおす様に出来ますでしょうか? 分かりにくい説明で申し訳ございません。よろしくお願い致します。

    • ベストアンサー
    • CGI
  • ログファイルの編集についてお聞きしたいのですが・・

    cgiログファイルを読み出して下記の様に任意に行数を指定して挿入する方法を教えていただければと思います。 何分、素人なので、その辺りを踏まえて教えていただければ助かります。また、サンプルの様なものがあればご参照お願い致しますm(__)m [例] 行数・内容 1************** 2////////////// 3++++++++++++++ 4-------------- 5============== 6############## 上記の状態のログファイルがあるとし、任意の行数(例えば)行数[5]を行数[2]に挿入した場合 [例] 行数・内容 1************** 2============== 3////////////// 4++++++++++++++ 5-------------- 6############## と保存しなおす様に出来ますでしょうか? 分かりにくい説明で申し訳ございません。よろしくお願い致します。 よろしくお願い致しますm(__)m

    • ベストアンサー
    • CGI
  • ログファイルを削除するcgiプログラム

    ログファイルを削除するcgiプログラム -------------------- $GYOUSUU = $FORM{'GYOUSUU'}; #--- ログファイルオープン open(FH,"***.log"); flock(FH,2); @FILES = <FH>; flock(FH,8); close FH; undef $FILES[$GYOUSUU]; open (FH2,">***.log"); @filew = "@FILES\n"; print FH2@filew; close(FH2); -------------------- となっているのですが、修正後にログファイルの行の頭に、半角スペースが入ってしまいます。 どこを修正すればいいのでしょうか?

    • ベストアンサー
    • Perl
  • バッチファイルを使ってテキストファイルの任意の行を削除したい

    こんにちは。 バッチファイルを使って、テキストファイルの任意の行を削除したいのですが、可能でしょうか? 今困っているのは、あるファイルの1行目と2行目と最後の行を削除したいのですが、コマンドがわかりません。 いろいろ調べてみたのですが、わかりませんでした。 よろしくお願いします。

  • ログファイルって情報が漏れるのでしょうか?

    CGIでログファイルを使用していますが、ログファイルの中身が外部から盗まれることってあるのでしょうか?あるとすればどのように対策すればよいのでしょう?

  • ログファイル log

    びっくりしました 特に気にしてはなかったのですが マイコン ↓ C ↓ WINDOWS ↓ KB○○○○○○.log(○のなかは数字です) 思いつくとすればセキュリティーホールのタイトルの ような気がしますが このログファイルは消しても大丈夫でしょうか? その場合 ファイルごと消しても大丈夫? ファイル名のこして中だけ消す PC内のログファイルは全部消しても問題ないのでしょうか? なんか見ててうざいので特に履歴等も人ようないかと思い 一括ログファイル削除ソフトなんてないんでしょうか? 一応過去ログやググって調べましたが レジストリクリーナー等しかなく ログクリーナーはありませんでした。 基本全部ファイルに入っていないと気になる性格ですW しかも意味があるものとは思えないし 会社のPCだったら理解もできますが ご存知の方いましたら教えてください。

  • ファイルの中の特定の行だけを削除したい

    あるファイルの特定の行だけを削除したいのですが、高速に行う方法はありませんか? とあるファイルがあり、これは数行~数万行にも及ぶ可能性のある大規模なファイルです。 このファイルの、特定の行を検索してその行だけ削除し、空いてしまった行は詰めたいのですが、どのようにすれば高速に行えますか? かなり遅い方法だと、 xxx = "hoge\n" arr = [] f = open("file") f.each{|line| if line != xxx then arr<<line end } f.close open("file", "w").puts arr.join() などが考えられるのですが、遅すぎて使えないはずです。 速度が求められる処理のため、困ってます。 もしご存じの方がいらっしゃいましたら、教えて頂けませんか?

    • ベストアンサー
    • Ruby
  • logファイルがあるといつまでもサーバに残るの?

    例えば掲示板のCGIをサーバに転送して、そのファイルの中にlogファイルがあったとしたら、掲示板に書き込んだものは、サーバにいつまでも残っているものなのでしょうか?

    • ベストアンサー
    • CGI