• 締切済み

VBである条件にヒットした行を抽出

VB2010であるテキストファイルに下記のような文字が入っているとします。 そこで、このファイルから「歌:」や「アーティスト:」、「歌手:」などと書かれている行を検索し、 その行の「歌:」や「アーティスト:」、「歌手:」以降の文字列を取り出したいと思いました。 下記の例では、「歌:小林ゆう」と書かれている行の「小林ゆう」を取り出したいです。 テキストファイルは数万件あります。 ご教示お願いします。 ************************ HANAJI 作詞:有森聡美 作曲:村井大 編曲:村井大 歌:小林ゆう タイアップ:TVアニメ「まりあ†ほりっく」 ************************

みんなの回答

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

ざっくり書くとこんな感じ 1.テキストファイルをシーケンシャルファイルして開く 2.行単位で読み込む処理をEOFまで繰返す。EOFなら6へ 3.1行読めたら、キーワードを含むか判断し、含まれるなら4へ、含まれないら5へ 4.:(コロン)でブった切る。切った右側を利用。 5.3へ戻る 6.ファイルを閉じる ・4はSplit関数でセパレータ文字にコロンを指定。配列の2項目がソレ しかし ・4で見つけたデータは「どう保存」するのかな? ・コロンは全半角の何れかに統一されてる?

関連するQ&A

  • perlを使用しての特定行抽出について

    何万行も書いてあるテキストファイルがあります。抽出したい文字列の一覧がテキストファイルにまとめられています(文字列は約1000個)。抽出したい文字列は一行にひとつづつ書かれています。何万行も書いてあるテキストファイルから抽出したい文字列と二つ合致したらその行を抽出したいです。ここで、注意していただきたいのが、抽出したい文字列一覧から二つの文字列にヒットした行を抽出したいです。宜しくお願い致します。 何万行も書いてあるテキストファイル aaaaa abc edi bb aert kkkkkkkkkk lllllll ddddd aaaaa anhi kkk    ・・・・・・・・ ・・・・・・・・ 抽出したい文字列一覧のテキストファイル aaaaa bbbbb ddddd iiiiiiiii eeeee ・・・・・ ・・・・・

    • ベストアンサー
    • Perl
  • ファイルの特定行の抽出

    C++言語についての質問です。 C++を利用して下記の処理を考えています。 下記のようなテキストファイルから、「名前」で始まる行だけを 抽出して、別のテキストファイへ書き込みを行います。 また、その際に”「名前」の表記”+”スペース文字”は削除します。 ----------------- 住所 東京都 名前 AAAAA 年齢 15才 ----------------- 住所 神奈川県 名前 BBBBB 年齢 20才 ----------------- <略> 実行後に出力されるテキストファイルには、 AAAAA BBBBB と記載されるように処理を行いたいです。 初心者のため、実現可能かも分かっていません・・。 お手数ですが、アドバイスをお願いします。 具体的な方法についても記載して頂けると助かります。 よろしくお願いします。

  • テキストファイル→抽出した行をexcelに

    VBAで、下記のようなログファイルのテキストを読み込んで、必要な文字が含まれる行だけを、エクセルに書き込むコードを教えていただけると助かります。 読み込むファイルの例(実際は、数万行あります) (1行目)dammy.co.jp - - [01/Jan/2015:00:03:51 +0900] "GET /west/index.html      HTTP/1.0" 200 ..... (2行目)smotor.co.jp - - [01/Jan/2015:00:03:51        +0900] "GET /drink/orange/index.html HTTP/1.0" 200 ..... たとえば、/west/ が含まれる行だけを抽出して、excelシートに書き込みたい ログファイルは、改行コードがCRLFです。  どなたかお分かりになる方、お助けください。 当方、VBAは初心者なので、説明も加えていただけると非常に助かります。

  • ある文字列を含む行の抽出

    お世話になります。 いくつかのテキストファイルがあり、それらのファイルのなかの、特定の文字列を含む行をすべて抽出して、別ファイルに集めて保存するようなことを、自動的に行うことはできますでしょうか?? officeソフトでできればよいのですが、ほかの方法でもかまいません。 お願いいたします。

  • VBAでテキストファイルからの特定行抽出

    エクセルのVBAで、テキストファイルから、特定の文字を含まない行だけを、別のテキストファイルに取り出す方法を教えてください。 具体的には、元のテキストファイルの中から、「.png」と、「.jpg」を含まない行を取り出して、別のテキストファイルに書き出したい。 元のテキストファイルは、エクセルでそのまま読み込むにはデータが大きすぎてエラーになってしまうので、、VBAで不要なデータを取り除いて、ファイルを小さくしていって、エクセルで扱える大きさにしていこうと思っています。 どなたかおわかりになる方がいらっしゃいましたら、どうぞよろしくお願いいたします。

  • データ抽出のご質問

    下記のようなことができるバッチファイルを作成できないかと思ってます。 一つのフォルダに 複数のテキストファイルがあり、 そのテキストファイルの 指定した行と その指定した行の3番目~5番目の文字を抽出したい考えてます。 フォルダ内の情報は、下記の感じです。 フォルダ内(フォルダ名:folder)には、このようなファイルがあります。 ファイル名: testX.txt ファイル内容: 1:aaa 2:bbb 3:ccc 4:ddd ファイル名: textY.txt ファイル内容: 1:ooo 2:ppp 3:qqq 4:rrr ここでは、2行目の「ccc」と「qqq」を考えてます。 皆さんからのご教示頂けると幸いです。 宜しくお願い致します。

  • 行の途中から読み込む方法

    こんにちは。 Javaでテキストファイルを読み込みたいのですが、以下のことができますか? ・行の途中から行の途中まで読み込む処理をファイルの終わりまで行う。 例えば、先頭から5文字目~先頭から20文字を1行分のデータとして取り込む方法を教えてください。

    • ベストアンサー
    • Java
  • テキストファイルから指定行をExcelに抽出したい。

    「WindowsXP」/「Office2003Professional」を使用しています。 一つのフォルダに格納された複数のテキストファイルから、指定した文字列を含んだ行だけをExcelに抽出し、一覧表にする方法を教えて下さい。 各テキストファイルの抽出したい部分は以下のようになっています。(一部抜粋) ------------------ +製造元 *NEC +型番 *ABC-000 +メモリMAX *512GB +スロット数 *2 +DIMM1 *256 MB *333MHz +DIMM2 *256 MB *333MHz ------------------ 文字の先頭に[+]がついているものが検索文字列で、[*]が抜き出したいデータ部分です。 (実際のテキストでは[+]や[*]は書いてありません。) これをExcelで検索文字列を項目名に指定し、[*]部分を抜き出し全テキストファイルを一覧表にしたいと思っています。(行列反転した表) ------------------     A        B    C    D       E       F     G 1 ファイル名 製造元   型番  メモリMAX スロット数  DIMM1   DIMM2 … 2 aaa.txt NEC   ABC-000  512MB     2 256MB   256MB 3 bbb.txt FUJITU FMV10 1024MB 2 512MB                ・                ・ ------------------ ●テキストファイルの検索文字列とデータの間には半角スペースが入っています。 ●テキストファイルの検索文字列の行位置はファイルごとに異なります。 ●テキストファイルの検索文字列の中にはファイルによっては存在しない文字列もあります。 ●ExcelのA列にはフォルダ内のファイル名が予め全て入力されています。 もしもVBAを使用しなければならない場合は、VBAの知識が無い為、勝手を申しますが詳しくご教示頂けると幸いです。 宜しくお願い致します。

  • 2つのファイルを比較し、不足分を抽出する方法

    テキストファイルAに存在し、テキストファイルBに存在しない行を、テキストファイルCに書き出す手段を模索しています。 具体例を下記に示します。 -------------------------------------------------------- 【テキストファイルA】 a b c d e 【テキストファイルB】 a c 【テキストファイルC】 b d e -------------------------------------------------------- 上記を実現できるソフトウェアなどご存知でしたら、ご教授いただけると幸いです。 処理概要として、下記を実現できればOKかと思います。 (1)テキストファイルAの1行目を読み込む。 (2)テキストファイルBを1行目から最終行目まで検索する。 (3)一致する行がなければ、テキストファイルCに書き出す。 (4)テキストファイルAの2行目から最終行に対して、(1)~(3)を繰り返す。 以上、ご回答のほどよろしくお願い致します。

  • テキストファイルの行抽出

    linux環境のプログラムについて質問です。 ある特定のファイル(テキストファイル)内のデータで 指定の行を抽出する方法を教えていただきたいと思います。 現在はawkを使用してbashスクリプト内で下記のように head, tailを使用していますが、処理が重いように 感じます。perlまたはawkなどで行抽出の軽い処理は できないでしょうか? (他のunixコマンドでも結構です。) ---------------------------------------- RNUM=`awk 'END{print NR}' $1` #行番号取得 for iwl in `seq 1 $RNUM`;do BASE=`head -n $iwl $1 | tail -n 1` done #iwl ---------------------------------------- Fortran, Cなども使えますが、色々組み合わせて使う上で bash内のスクリプトで行ないたいと思います。