perl初心者です。
後ろの行を読んで、戻って、指定の行に、書き込む方法が、よくわかりません。
下記のようなファイルを読み込んで
----------------------------
アルファベット=
1A
2B
3C
アルファベット=
1A
2B
アルファベット=
1A
2B
3C
4D
5E
6F
------------------------------
下記のように、「アルファベット=」にアルファベットを入れるには、どうしたらいいでしょうか?
------------------------------
アルファベット=ABC
1A
2B
3C
アルファベット=AB
1A
2B
アルファベット=ABCDEF
1A
2B
3C
4D
5E
6F
--------------------------------
よろしくお願い致します。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
後の行のデータを前の行の末尾に追加するには、1行毎の処理ができませんので、
一時的な配列を利用する等になるかと思います。以下は、簡単なコード例です。
use strict;
my @block = ();
while (my $line = <DATA>) {
if ($line =~ /^アルファベット/) {
print "$block[0]\n", @block[1 .. $#block] if @block;
chomp $line;
@block = ($line);
} else {
$block[0] .= substr($line, 1, 1);
push @block, $line;
}
print "$block[0]\n", @block[1 .. $#block] if eof;
}
__DATA__
アルファベット=
1A
2B
3C
アルファベット=
1A
2B
アルファベット=
1A
2B
3C
4D
5E
6F
No.3
- 回答日時:
すでにあるファイルの末尾にデータ(文字)の追加はできますが、末尾以外への挿入は Perlの入出力機能では出来ません。
普通は、No.1さんのおっしゃる様にファイル全部を読み込んで変更してファイル全部を書き戻す処理になるでしょう。 処理速度を上げたいなら工夫の余地はありますが、プログラミングの初心者さんがトライすべきテーマでは無いと思います。
No.2
- 回答日時:
> 後ろの行を読んで、戻って、指定の行に、書き込む方法
そのままのアルゴリズムで。
書き込むときに1行分のlengthを変数に取っておき、
書き直したい行を発見したらseekで戻る。
No.1
- 回答日時:
とりあえずお手軽に処理するなら、
※メモリに全てを読み込んで処理をしたあと、メモリから元のファイルに上書きする。
って方法があります。最近のPCはメモリーも大きいですし、仮想記憶の機能もあるので、そうとう大きなファイルをメモリーで処理しても、問題ないでしょう。
なお、一発でうまくいくとは限らないので、とりあえず別ファイルに書き出し、OKになったらリネームする方法がいいかもしれません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) お世話になります ACCESSを使用しています 下記のクエリデータ(1)があります 商品名 行数 A 1 2022/09/05 08:52
- 政治 私の発明した「二階建て漢字」は使えるでしょうか? 3 2023/02/08 16:40
- Access(アクセス) capeofdragonと申します。 Access2016を使っております。 あるフォームがあり、テ 2 2022/09/09 13:18
- アジア ベトジェットエアの登録について 1 2023/07/03 14:43
- Visual Basic(VBA) CODE関数のvbaバージョンか方法はありますか? 5 2022/09/01 17:00
- 数学 下の写真で、△ABCと△ADEの合同を証明する時、∠BACを∠EAC、∠DAEを∠CAEと書いたらバ 6 2022/12/12 17:26
- その他(悩み相談・人生相談) 覚えるのが困難な字 それは… 実はアルファベットの小文字なんです。 どんなに勉強しても記憶に残り憎い 2 2022/05/12 22:45
- 英語 30代になっても英語のアルファベット全部言えないのは恥ずかしいでしょうか? アルファベットを言おうと 3 2023/04/02 15:59
- Excel(エクセル) ある範囲のセルに何を入力すると、別のセルに○を表示させる 3 2022/04/05 15:51
- 英語 義務教育の中学3年間で習う英語だけで日常会話から読み書きまで外国に行って通用しますか? 可能ならどん 8 2022/11/28 08:45
このQ&Aを見た人はこんなQ&Aも見ています
-
見学に行くとしたら【天国】と【地獄】どっち?
みなさんは、一度だけ見学に行けるとしたら【天国】と【地獄】どちらに行きたいですか? 理由も聞きたいです。
-
3分あったら何をしますか?
カップ麺にお湯を入れて、できるまでの3分間で皆さんは何をしていますか?
-
これが怖いの自分だけ?というものありますか?
人によって怖いもの(恐怖症)ありませんか? 怖いものには、怖くなったきっかけやエピソードがあって聞いてみるとそんな感覚もあるのかと新しい発見があって面白いです。
-
何歳が一番楽しかった?
自分の人生を振り返ったとき、何歳のころが一番楽しかったですか? 子供の頃でしょうか、それとも大人になってからでしょうか。
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
Perlで特定行から特定行までを抜き出したい
Perl
-
巨大なテキストの最終行を取得するには
Perl
-
Perlで行頭にある文字が含まれている行を全部削除して詰めたい
Perl
-
-
4
特定の文字列を削除
Perl
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】看板の文字を埋めてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・【穴埋めお題】恐竜の新説
- ・我がまちの「給食」自慢を聞かせてっ!
- ・冬の健康法を教えて!
- ・一番好きな「クリスマスソング」は?
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでCSVファイルの特定行を書...
-
VBAでCSVファイルを途中行まで...
-
ExcelをCSV書き出す場合のシー...
-
エクセルVBA コードが同じでも...
-
2つのCSVファイルをマッチング
-
openした後、closeしないでプロ...
-
ReadLineでの読み出し行を指定する
-
JavaでCSVファイルを高速に読む...
-
VB6.0でDB接続する際に切断時の...
-
VBAで巨大なファイルの途中から...
-
エクセルマクロについて CSVフ...
-
DOSコマンドで、標準出力を出力...
-
vba dir の相対パス
-
Perlで特定行から特定行までを...
-
readdir()で得られるファイル・...
-
python renameについて
-
batファイルでrenameができませ...
-
C言語でファイル名を取得
-
改行コードが勝手に
-
C言語で特定の行を抽出する方法...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでCSVファイルを途中行まで...
-
VBAでCSVファイルの特定行を書...
-
ExcelをCSV書き出す場合のシー...
-
エクセルVBA コードが同じでも...
-
ReadLineでの読み出し行を指定する
-
openした後、closeしないでプロ...
-
VBAで巨大なファイルの途中から...
-
JavaでCSVファイルを高速に読む...
-
Perlの変数に文字数制限(容量...
-
MATLAB グローバル変数の宣言
-
拡張子 ”log” と ” dat” の違い
-
VBScriptでファイル保存先のデ...
-
csvファイル改行コードの置換に...
-
C言語でのファイルのデータ更...
-
Perlでファイルの列を削除する。
-
sysread と read はバイナリ読...
-
VB6.0でDB接続する際に切断時の...
-
perlで、後ろの行を読んで、前...
-
動画像から静止画を取り出すには
-
エクセルマクロについて CSVフ...
おすすめ情報