質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Perl

Perlは多目的に使用される実用性が高い動的プログラミング言語のひとつです。

置換

置換とは文字列中の特定の文字に対して、別の文字列に置き換えることを指します。

Q&A

1回答

3500閲覧

Perl 指定行の文字列置換及び削除

tanakamann

総合スコア4

Perl

Perlは多目的に使用される実用性が高い動的プログラミング言語のひとつです。

置換

置換とは文字列中の特定の文字に対して、別の文字列に置き換えることを指します。

0グッド

1クリップ

投稿2020/03/10 07:47

前提・実現したいこと

完全初心者でperlにてツール開発しています。
perlにて指定された行数をある条件で置換及び削除をしたいです。

補足情報(FW/ツールのバーActivePerl 5.28.1

ここにより詳細な情報を記載してください。

(例)テキストファイルファイルの71行目の「Background」という文字を消す。
※「Background」の文字はほかの行でも使用しているのでピンポイントで消したい。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

行番号については、perlの組み込み変数$.で現在行番号を得られるので、プログラム中で利用すると良いです。

以下は処理対象のテキストファイルの3行目から5行目までについて、Backgroundの文字列があれば、その文字列を空にするサンプルです。文字列の置換は現在行に対してs/パターン/置換文字列/構文を使っています。

perl5

1while (<>) { 2 printf("%d: Before:\t%s", $., $_); 3 if (3 <= $. && $. <= 5) { 4 if (/Background/){ 5 s/Background//g; 6 } 7 } 8 printf("%d: After:\t%s", $., $_); 9}

以下の内容のdata.txt と言うファイルがあるとして

PlainText

1--- Background at LINE1 2LINE2 3LINE3 4--- Background at LINE4 5LINE5 6LINE6 7LINE7

これをWindows10のwsl上のperl5 (5.26.1) で実行すると、以下のような実行結果となります。

sh

1$ perl -w test1.pl data.txt 21: Before: --- Background at LINE1 31: After: --- Background at LINE1 42: Before: LINE2 52: After: LINE2 63: Before: LINE3 73: After: LINE3 84: Before: --- Background at LINE4 94: After: --- at LINE4 105: Before: LINE5 115: After: LINE5 126: Before: LINE6 136: After: LINE6 147: Before: LINE7 157: After: LINE7

その他、削除も含む細かい処理はご自分で考えてみてください。ActivePerlは主にWindowsコマンドプロンプト上で実行することになると思いますが、文字コードや改行コードの違いに気を付ける以外は、コードはほぼ同じもので問題ないはずです。

投稿2020/03/10 08:47

dodox86

総合スコア9256

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問