- ベストアンサー
ファイルを1行削除する
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
原始的ですが、以下の方針が考えられます。 ・ファイルの内容を一行ずつ読み込む ・削除対象となる行かどうかのチェック ・削除対象の行なら、次の行へ ・削除対象でなければ、行の内容を変数に格納 ・全ての行をチェックし終えたら、変数に格納した 情報だけを元のファイルに上書きする。 これは、効率は悪いのですがとりあえず使えます。 ちなみに、Tempファイルを使う方式だと 「削除対象でなければ、行の内容を変数に格納」 しないで、ファイルに追記することになります。 (全部終わったら、Tempファイルと元のファイルを 置き換えて、Tempファイルを削除します)
その他の回答 (1)
- longname
- ベストアンサー率28% (18/64)
おそらく読み出すときは1行づつ読み出して配列に入れていると思います。それを利用する場合はforeachなどで配列の要素一つ一つに対して処理を行います。 削除するときは、foreachで該当する番号と一致するかどうか要素をひとつひとつ比較し、一致しない場合だけ、その要素を別の配列にいれます(push,unshift等)。 そしてその新しい配列をファイルに書き出せば該当行の含まれないファイルができます。 ログファイルが大きくなると、処理速度等が問題になるので工夫が必要でしょうが、直感的に分かり易く、他の処理とからめて応用は利くと思います。 別の方法として、ファイルから1行づつ読み出したとき配列ではなく番号をキーにしたハッシュに入れておくと、該当する番号をキーにもつ要素をdeleteによって削除できます。foreachで回す部分が減ってよさそうです。 具体的にはフリースクリプトや参考書が勉強になります。
お礼
ありがとうございます^^ とりあえず今は勉強段階なので、上の方法でやってみようと思います。 理解できるようになってきたら下の方法も試してみますね(^▽^)ノ
関連するQ&A
- 秀丸で一行おきに行を削除する方法について
秀丸で、一行おきに行を削除する方法について御教授ください。 今、手元に50万行のデータが入力されたテキストファイルがあるのですが、一行おきに行を削除したいと考えています。 たしか、正規表現を使えば出来たかと思うのですが、忘れてしまいました。 どなたか御教授いただけると幸いです。
- ベストアンサー
- オフィス系ソフト
- 《エクセル2000》非表示になっている行を一括選択して削除したい
表示・非表示行が混在しているシートが40強あります。 自分で作ったファイルではないので勝手がわからず、今は一行一行非表示行がないかを目で確認して、表示→削除という手順を踏んでいます。 例えば「表示行と非表示行を入れ替える」ような機能はありますか?
- 締切済み
- オフィス系ソフト
- ファイル内のデータを1行削除する方法
いつもお世話になります。 今、ファイル操作を勉強しています。 sample.txtに下記のデータが格納されています。 【sample.txt】 --------------------- yamada.txt | 29 suzuki.txt | 25 kitamura.txt | 30 endo.txt | 32 --------------------- char *name="suzuki.txt"; sample.txtのデータがchar nameと一致する、 ファイルの行を削除し、行を詰めたいのですが どうしたらいいのでしょうか? 結果として、sample.txtが、 --------------------- yamada.txt | 29 kitamura.txt | 30 endo.txt | 32 --------------------- のように、一致したsuzuki.txtの行が削除され、 行が詰められている状態にしたいです。 どうぞよろしくお願い致します。
- 締切済み
- C・C++・C#
- 行を削除しても自動的に連続した数値を表示させる方法
A列に 1 2 3 4 5 ・・・と行番号を入力するに当たって 仮に3行目を削除してしまうと、1 2 4 5 ・・・と 数字が飛んでしまいます。 3行目を削除しても 1 2 3 4 5 ・・・と行番号が 自動的に書きかわる初歩的で簡単な方法があったと思うのですが、 思い出せません。 教えてください。よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- Excelで空白行を削除したい
他の書類からExcelにコピペしたんですが、もとの書類の書式のせいか偶数行が全て空白行になっています。 実際に必要なデータは奇数行の各列に並んでいます。 見づらいので空白行(または偶数行でも同じ)を削除したいんです。 行数が500を超えるので、一行づつ行の削除をやっていると大変な手間です。 一発でやる方法はないでしょうか?
- ベストアンサー
- オフィス系ソフト
- IDの下の間違いを削除したい
このサイトにログインする時に、ID欄に間違った一文字を入れてしまいました。次から、最初の一文字を打つと、正しいIDの上に、その間違った行も出てしまい、うっとうしくて困っています。削除キーを押しても消えません。どうしたら間違って入力した一行を完全に削除できますか?
- ベストアンサー
- Windows XP
- 合計が0の行を削除
計算式が入力されており、合計が0(A,B列に数値が入力 されていない)の行を削除するVBAを教えてください。 A B C 1 10 5 15 2 0 3 20 6 26 C列に計算式が入力されています。 50行目まで入力されています。 オートフィルタを使用し、抽出された行を削除する方法が あると思いますが、VBAで作成する方法を探しています。 よろしくお願いします。
- ベストアンサー
- その他MS Office製品
お礼
おおーなるほど('o'*) てっきりそのまま削除できるんだと思ってましたが、 まずそこから違うんですねー とても勉強になりました^^ どうもありがとうございます<(__)>