複数行を1レコード化する方法について

このQ&Aのポイント
  • 複数行を1レコード化する方法を教えてください
  • 要件は、複数行の文章を単一のレコードにまとめることです
  • 効率的な方法や既存ライブラリの活用方法を教えていただけると助かります
回答を見る
  • ベストアンサー

複数行を1レコード化

**********ABCDEF****** 166 hogehogehogehoge 266 hogehogehogehoge **********ABCDEF****** 105 hogehogehogehoge 356 hogehogehogehoge 656 hogehogehogehoge **********ABCDEF****** 125 hogehogehogehoge 356 hogehogehogehoge ↓ **********ABCDEF******@@166 hogehogehogehoge@@266 hogehogehogehoge **********ABCDEF******@@105 hogehogehogehoge@@356 hogehogehogehoge@@656 hogehogehogehoge **********ABCDEF******@@125 hogehogehogehoge@@356 hogehogehogehoge のようにしたいのですが、何かうまい方法はないでしょうか? 急いでいます。よろしくお願いします!

noname#27709
noname#27709
  • Perl
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • alicia-y
  • ベストアンサー率40% (85/208)
回答No.1

open(F, "xxxxx.txt"); $l = <F>; push @all, $l; while(<F>){ chomp; if(/^\*+/){ print join('@@', @all), "\n"; undef @all; push @all, $_; } else { push @all, $_; } } print join('@@', @all), "\n"; close(F);

noname#27709
質問者

お礼

正規表現とかで簡単に行くものかと思って模索していましたが、 かなり難しいのですね。 ありがとうございます!非常に助かります!

関連するQ&A

  • 複数行を1レコードにまとめたい

    1つのテーブルでカラムAに個人を特定する情報、カラムBに個人情報の項目、カラムCにその値が設定されています。 カラムBは個人によって登録されている数が異なります。 カラムBから必要な項目を特定して個人を1レコードに集約して抽出したいと思っているのですが、どのようにSQLを作成すればよいでしょうか? 作成してみたSQLでは1レコードに1カラムずつしか値が入らないため、複数行となってしまうのでまとめたいという状況です。 データ カラムA, カラムB, カラムC ------------------------- KOJIN1, AAA, MOJI1 KOJIN1, BBB, MOJI2 KOJIN2, AAA, MOJI3 KOJIN3, BBB, MOJI4 KOJIN3, CCC, MOJI5 select カラムA, case when カラムB = AAA then カラムC end カラムAAA, case when カラムB = BBB then カラムC end カラムBBB from テーブル 結果 カラムA, カラムAAA, カラムBBB ----------------------------- KOJIN1, MOJI1, KOJIN1, , MOJI2 KOJIN2, MOJI3, KOJIN3, , MOJI4 ↑KOJIN1, MOJI1, MOJI2 のように出力したい 初歩的な質問かもしれませんが、よろしくお願いします。

  • エクセル2010 複数枚のシートの名前を一度に変更

    エクセル2010を使用しています。 複数枚のシート名にそれぞれ次のように名前が入っています。 A001abcdef_R_1_1 A002abcdef_R_1-2 A003abcdef_L_1-1 A004abcdef_L_1-2 A005abcdef_R_2-1 A006abcdef_R_2-2 A007abcdef_L_2_1 A007abcdef_L_2-2 ・ ・ ・ (文字はすべて半角です。) この複数枚のそれぞれのシート名から、アンダーバー(_)とハイフン(-)を削除したいです。 どうぞよろしくお願いします。

  • サブフォームへの新規レコードを一度に複数行を出したい

    access初心者です。マクロやVBAもほとんどわかりません。 前任者がTHE CARDというソフトで見積書を作っていたのですが 最近データが壊れやすくなってきて、作り方も忘れたとのこと。 そこでaccessを使う事になったのですが、フォームで見積書を作り サブフォームには見積の詳細を出しています。 そこで無駄には見えますが、新しいレコードを追加した時に サブフォームに13行を自動的に出せないでしょうか? あと、そのカレントのレポートのみの印刷方法も教えて下さい。 わかりにくいかと思いますが宜しくお願いします。

  • 1レコードのデータを複数行に分け通し番号を付ける

    Access2010にて、1レコードのデータを複数行に分け、追番毎に通し番号を付ける方法がわからず困っています。 テーブル1の様に、1レコードにはデータ格納するカラムが4つしかなく、同じ追番でデータが5個以上ある場合は、次のレコードに同じ追番を入力して5個目以降のデータを格納しているテーブルがあります。 テーブル1 追番 カラム1 カラム2 カラム3 カラム4 1 データ1 2 データ1 データ2 データ3 データ4 2 データ5 データ6 データ7 3 データ1 4 データ1 ・ ・ ・ これをテーブル2の様に1レコードにデータ1個づつ格納し、追番毎の番号を振りたいと思います。 テーブル2 追番 番号 データ 1 1 データ1 2 1 データ1 2 2 データ2 2 3 データ3 2 4 データ4 2 5 データ5 2 6 データ6 2 7 データ7 3 1 データ1 4 1 データ1 ・ ・ ・ クエリ1の様なユニオンクエリで近いかたち(テーブル3)にできたのですが、同じ追番で番号が1~4まで埋まったら、5以降の番号を降る方法が分かりません。 クエリ1 SELECT 追番, 1 AS 番号, カラム1 AS データ FROM テーブル1 WHERE カラム1 Is Not Null UNION ALL SELECT 追番, 2 AS 番号, カラム2 AS データ FROM テーブル1 WHERE カラム2 Is Not Null UNION ALL SELECT 追番, 3 AS 番号, カラム3 AS データ FROM テーブル1 WHERE カラム3 Is Not Null UNION ALL SELECT 追番, 4 AS 番号, カラム4 AS データ FROM テーブル1 WHERE カラム4 Is Not Null; テーブル3 追番 番号 データ 1 1 データ1 2 1 データ1 2 1 データ5 2 2 データ2 2 2 データ6 2 3 データ3 2 3 データ7 2 4 データ4 3 1 データ1 4 1 データ1 ・ ・ ・ よろしくお願いします。

  • bashのコピー&ペーストの方法を教えてください。

    基礎的なことでかたじけないです。 マウスとALTキーを使わずに(マウスが接続されていない&TeraTerm経由の環境なので) abcdef12345abcdef という文字列の「12345」の部分をコピーして末尾にペーストする方法を教えてください。 abcdef12345abcdef ↓ abcdef12345abcdef12345 どうぞよろしくお願いいたします。

  • 複数行書き込むにはどうしたら良いのでしょうか?

    <?php exec("sh -c 'echo \"aaa\" > write.txt'", $result); ?> で、ファイルにaaaと書き込めるようですが、 このようなシェルをexec、system関数から実行する方法で、aaaではなく、 aaa bbb ccc と複数行のデーターをファイルに書き込みたい場合は、どのようにしたら良いのでしょうか?

    • ベストアンサー
    • PHP
  • レコードは2行あるのに「-1」が返ってくる

    accessです。 テーブル1にレコードは2行あるのに、下記のコードを実行すると「-1」が返ってきます。 なぜでしょうか? ------------------------------------------------------------ Sub test() Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Set cn = Application.CurrentProject.Connection Set rs = cn.Execute("SELECT * FROM テーブル1") MsgBox rs.RecordCount rs.Close cn.Close Set rs = Nothing Set cn = Nothing End Sub ------------------------------------------------------------ ご教示よろしくお願い致します。

  • viコマンドで

    次のようなテキストファイル内のabcdの行末にefを 一括で挿入する方法はないでしょうか? abcd abcd abcd abcd     ↓ abcdef abcdef abcdef abcdef

  • perlで、後ろの行を読んで、前の行に書き込むには?

    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 -------------------------------- よろしくお願い致します。

  • 空白無視して並べ替え

    ABCDEFG, ABCDEF G, ABCDEFF を降順で並べ替えると ABCDEFG, ABCDEFF, ABCDEF G と並べ替えられます ABCDEFG, ABCDEF G, ABCDEFF の順で並べ替える方法はありますか?

専門家に質問してみよう