• 締切済み

テキスト内文字列検索 Perl言語

テキストファイル内の文字列を「Perl」で検索したいのですが…。 例 aa.txtの中の"AA"を含む1行をデスクトップのbb.txtに追加書き込みをする。AAの部分は外部からのタイプで変化させる。 このようなPerlのプログラム、初心者ですがよろしくお願いします。

  • Perl
  • 回答数2
  • ありがとう数2

みんなの回答

  • ecogilis
  • ベストアンサー率60% (12/20)
回答No.2

こんにちは。 こんな感じ? ------------------------------------------- 1) aa.txtというファイルを読み取りモードで開く 2) bb.txtというファイルを追記モードで開く 3) aa.txtの1行を文字列として読み出す。 4) ファイル終端に達してしまったら  4-1) 開いたファイルを閉じて終了 5) 読み取れたら  5-1) 読み出した行にに対してAAをマッチング  5-2) マッチしたら、bb.txtに出力 6) 3に戻る。 ------------------------------------------- perlを問わず、普通、ファイルに対する操作は、ファイルを開いて、読み取って(書き込んで)、閉じて、が基本です。 これらの機能を使うには、、、は、調べてみると分かるかなと思います。 外部からの入力は、GUIアプリじゃなければ、プログラムへの引数とか、標準入力とか使います。 マッチングは、、、色々サイトを見てみるとわかるかなと思います。 初めてだと大変かもしれませんが、根気良くうんうん唸りつつ色々調べたり試してみると身につきます。 がんばってくださいましー。

Windy422
質問者

お礼

ご回答ありがとうございます! とても参考になりました。これから、もっと調べて慣れていこうと思います。 この度は、本当にありがとうございました

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

えーと、そういうスクリプトを作ってくれ。という丸投げな依頼ですか? >aa.txtの中の"AA"を含む1行をデスクトップのbb.txtに追加書き込みをする。AAの部分は外部からのタイプで変化させる。 これだけなら grep で用がすむでしょう。 grep -e 'AA' aa.txt >> bb.txt

Windy422
質問者

お礼

回答ありがとうございます。 このようなプログラムはどうやって動いてるんだろうとずっと思っていました。 興味はだんだん大きくなる一方でしたが、Perlに対する理解が進まなかったので質問をしてみました。 文字列の探索はこのようなプログラムで動いてるんですね。 これを機会に、もっと頑張っていきたいと思います。 この度は、ご返答ありがとうございました。

関連するQ&A

  • エクセルファイルのセル値に特定文字列を追加して別ファイルに

    VB2008でのプログラム方法についての相談です。以下の手順を実現したいです。 (1)エクセルファイルのあるセル中にあるデータを取得 例)A1セルの値"AA"、A2セルの値"BB"、A3セルの値"CC"..... (2)決まりきった特定文字列と(1)の値を結合 例)くっつけたい文字列 " "+AA ⇒ くっつけたい文字列"AA" くっつけたい文字列 " "+BB ⇒ くっつけたい文字列"BB" くっつけたい文字列 " "+CC ⇒ くっつけたい文字列"CC" (3)テキストファイルを生成 ○○○.txt 例) くっつけたい文字列"AA" くっつけたい文字列"BB" くっつけたい文字列"CC"

  • 【Perl】文字列をカウントしたいです。

    以下のようなテキストファイルがあります。(ここで出すのは例なので、本当は1万行くらいあります) 20927258 7092 20927258 7093 21167105 7092 21167105 10469 21167105 10470 21167105 10471 21167105 10472 21167105 10473 21167105 10474 この中に入っている文字列、例えば20927258や10474などがいくつあるかをカウントするためのプログラムを書きたいのですが、どのようにすればよいでしょうか?? 重複があるので、それは消したいです。つまりこの例でいえば 20927258は2つということにしたいです。 よろしくお願いします!!!!

  • Perlでの文字列処理について

    プログラム初心者です。 Perlで下記のような文字列処理のプログラムの書き方がわからず、質問させて頂きました。 【内容】 FILE_A.txtが「!」マークで区切られていて、「!」マークの下行の文字列をIPアドレスの右横に移動したものをFILE_B.txtに出力するという処理です。 「!」マークの下行の文字列の「name」は共通です。 -------------------------------------------- 【FILE_A.txt】 ! name abcdeLV 123.123.123.123 123.123.123.124 123.123.123.125 ! name fghijLV 10.10.10.11 10.10.10.12 10.10.10.13 10.10.10.15 10.10.10.16 ! -------------------------------------------- ↓ -------------------------------------------- 【FILE_B.txt】 123.123.123.123 abcdeLV 123.123.123.124 abcdeLV 123.123.123.125 abcdeLV 10.10.10.11 fghijLV 10.10.10.12 fghijLV 10.10.10.13 10.10.10.15 fghijLV 10.10.10.16 fghijLV -------------------------------------------- 上記のようなPerlでの処理を具体的に教えて頂ければうれしいです。 本サイトのようなものを利用するのが初めてですので、不手際があるかもしれませんが なにとぞよろしくお願いいたします。

    • ベストアンサー
    • Perl
  • 検索した文字列がある行を検索するには

    OPEN "A.txt" QWER gohjoij OPEN "B.txt" OPEN "QWERT" Write A.txt jortyu end と書かれたテキストファイル(ファイル名を"ABC.txt"とする。)があるとします。これを 1.OPEN "*.*"(*=ワイルドカード)という文字列の*.*のみに絞る 2."1."の内" "の中に、"."が無い文字列は無視する うえでリッチテキストボックス1に出力するようにします。リッチテキストボックス1には A.txt B.txt と出力されました。これをさらに[A.txt B.txt]がある行全体を、 1.別のリッチテキストボックス(リッチテキストボックス2)に出力する やり方がわかりません。この例だと、リッチテキストボックス2には OPEN "A.txt" OPEN "B.txt" Write A.txt jortyu と出力したいです。今のスキルだと到底作れそうに無いので、どなたか教えてください。

  • Perlでのテキスト処理について

    Perlでのテキスト処理について質問です。 テキストファイルの中身が下記のようになっています。 【テキスト編集前】 --------------------------------------- test ,abc ,AB ,VI ,SS ,ma ---1行目 test ,abc ,AC ,PI ,VS ,ma ---2行目 test ,abc ,BA ,SS ,VS ,ma ---3行目 test ,abc ,BA ,VI ,VS ,ma ---4行目 test ,cde ,AA ,VI ,SS ,mb ---5行目 test ,cde ,CC ,PE ,VS ,mb ---6行目 test ,cde ,BC ,PI ,SS ,mb ---7行目 test ,cde ,AC ,PI ,SS ,mc ---8行目 --------------------------------------- 2列目(abc/cde)と6列目(ma/mb/mc)が同じ行に対しては 1行にまとめて出力したいと思っています。 この時、1列目、4列目、5列目はマージした形にし (同一文字は一度だけ出力、同一でない文字は/区切りで出力)、 2列目、6列目は同一文字をそのまま出力し、 3列目に関しては、該当する行の先頭行の文字列を 出力したいと思っています。 下記が当方の希望しているPerl実行後の出力結果です。 【テキスト編集後】 --------------------------------------- test ,abc ,AB ,VI/PI/SS ,SS/VS ,ma test ,cde ,AA ,VI/PE/PI ,SS/VS ,mb test ,cde ,AC ,PI ,SS ,mc --------------------------------------- このような編集をPerlで実行したいと思っているのですが、 どのような記述をすれば実行できるのか教えて頂けないでしょうか。 当方、Perlを始めたばかりで基本的なことを 伺っているのかもしれませんが すみませんが、ご了承ください。 宜しくお願いいたします。

  • ファイルの最後に文字列挿入

    複数テキストファイルの最後に、固定の文字列(1行)を追加したいのですが、batファイルで行う場合は、どのようにすれば良いのでしょうか? 例) AAAA.txt BBBB.txt CCCC.txt (ファイルの中身はそれぞれ異なるが拡張子は同じ)3つのファイルの最後に、 XXXXX=YYYY+ZZZZZ という1行を追加したい。 お手数をおかけします。よろしくお願いいたします。

  • 文字列の比較

    現在Cでプログラムをつくっているのですが いきずまってしまいました。 1.テキストファイルを読み込む 2.書き込みファイルを開く 3.読み込んだデータを一行読み込んで   その行の特定の文字列があれば、   特定の文字列のみ取り出し、   書き込みファイルに書く。    4.次以降の行も同じ処理をする。    5.読み込み、書き込みファイルを閉じる。 と、こんな感じのプログラムなのですが、 3の特定の文字列をどのように取り出せばいいのかわかりません。 取り出したいのが数字ならば、if文でできるのですが 文字列の場合は、どうなんでしょうか。 例えば、「MOJIRETU11」という取り出したいとき 数字と同じようにIF文を使用することは、できるのでしょうか。

  • 特定文字列で囲まれた範囲を抜き書きするためには?

    特定の文字列で開始され、特定の文字列で終了するテキストの一部を抜き出すためには、コマンドラインからは perl -ne 'print if /開始文字列/ .. /終了文字列/' file.txt でできると思うのですが、これがたとえば $page 変数に入ったテキストで同様の処理を Perl 内部のスクリプトで行う時にはどうすればいいのでしょうか? while(<$page>){ ... } とかやって1行1行処理してみようと思ったのだけど、できません。

    • ベストアンサー
    • Perl
  • javaScriptで、テキストエリアのある文字列を見つけて、

    javaScriptで、テキストエリアのある文字列を見つけて、 その行から、1行目と2行目を消すという処理を行いたいのですが、 コーディングがわかりません。 教えて下さい。 (例) 下記のテキストエリアから、「<ターゲット文字列>」を見つけて、 その行から1行目と2行目、つまりは、「さしすせそ」と「たちつてと」を削除したいです。 -----textarea----- あいうえお かきくけこ <ターゲット文字列> さしすせそ たちつてと

  • 100文字が並ぶテキストを10行10列にする方法(Bシェルにて)

    100文字が並ぶテキストをBシェルにて10行10列にする方法を教えてください。 テキスト(test.txt)には、次のようにスペースで区切られて100文字入っています。(この例の様に規則性はありません) 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 ..(省略) ↓これを 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 (省略) の様にするやり方を教えてください。 Bシェル初心者です。宜しくお願い致します。

専門家に質問してみよう