• ベストアンサー

複雑なテキスト変換

テキストのログがあるんですが、これをある規則にしたがっていらない部分を削除したいのですが、効率的にする方法はあるでしょうか? したい事は、↓↓.↓から、↓↓--↓↓の間に挟まっている文章をすべて、↓↓.↓↓に変換することです。 改行を↓であらわしています。 例えば、 aa bb . ccc ddd -- ee ff というものを aa bb . ee ff のように変換したいのです。 だいたい500~1000箇所ほどの変換です。 やり方がわからず非常に困っています。どうぞよろしくお願いします。 ちなみに、OSは、windowsXPを使っています。

noname#5179
noname#5179

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

  • ベストアンサー
  • fuyounor
  • ベストアンサー率47% (132/278)
回答No.1

エディタでマクロを組めば可能です。 マクロは殆どのエディタで可能ですが、記述方は各エディタによって異なります。 またキーステップでマクロを組む事も可能なものも有ります。 エディタ&マクロで検索かけると探せると思います。

noname#5179
質問者

お礼

回答ありがとうございました。 今探したところ、秀丸が、マクロが組めて、さらに試用可能なようですので、これを使おうなかなと思いましたが、どのようにマクロを書けばいのかわかりません。 他のエディタでもかまいません。 この場合、どういうようにマクロを書けばいいのか、教えていただけませんか。

noname#5179
質問者

補足

結局VECTORでソフトを見つけたのでそちらの方法でやることにしました。

その他の回答 (2)

  • ittochan
  • ベストアンサー率64% (2667/4137)
回答No.3

>間に挟まっているのがいろいろで、違うのです。 >で、要らない情報だから、削除したいのです。 改行から始まって --で終わる文字列を削除したいってこと?

noname#5179
質問者

お礼

.以降--までを削除したいのです。

noname#5179
質問者

補足

改行改行.改行 です。 間に”.”が入っていて、これが目印です。  

  • Spur
  • ベストアンサー率25% (453/1783)
回答No.2

そのものズバリのソフトがあるとは思えません。 自分でプログラムするしかないと思います。 プログラムには色々な手段がありますので、可能なものを選択することになります。 (1)No.1の方が言われるようにエディタやMS-WORD、MS-EXCELなどのマクロで行う (2)perlで組む (3)VBなどで組む 「.」と「--」の間に挟まっている文字が固定しているなら、MS-WPRDやエディタの「置換」機能でも簡単に出来ます。

noname#5179
質問者

お礼

残念ながら、間に挟まっているのがいろいろで、違うのです。 で、要らない情報だから、削除したいのです。 プログラムは残念ながら、書けません。 今後、これと同じ作業をする予定はないので、なるべく労力をすくなくして済ませたいのですが、どうやるのが一番労力が少なくてすむでしょうか。

noname#5179
質問者

補足

VECTORで、テキスト 置換で探したところ、目的に合いそうなソフトが結構見つかりました。 今回はその中の PsBR というソフトを使うことで目的の変換が、楽にできました。

関連するQ&A

  • javascriptでスペース+改行を変換

    javascriptでテキストエリアなどで入力した文字列のスペース+改行を改行のみに変換したのですがうまくいきません。 例えば$を半角スペースとすると aaaaa$ bbb$ccc$ ddd$ee は aaaaa$\nbbb$ccc$\nddd$ee となっているはずですよね? それを aaaaa\nbbb$ccc\nddd$ee として aaaaa bbb$ccc ddd$ee と出力したいです。 単純にスペースをなくす処理だとbbb$cccがbbbcccになってしまいます。 正規表現などをいろいろ調べたのですが、このように行数がたくさんある文字列の変換例が載っていなくて分かりませんでした。 よろしくおねがいします。

  • VBAでCSVファイルを分割したい

    VBAを利用して、あるCSVファイルを一定のレコード数ごとに新しいファイルにファイル分割したいです。 やりたいことは、以下のようなイメージです。 関連サイトなどを参考に自分なりに取り組んでみましたが、なかなかうまくいきません。 VBAでなくても実現できそうですが、ここまでやったので勉強のためにもVBAでやりたいです。 サンプルコードなど教えていただけるとうれしいです。 ヒントでも結構ですので、よろしくおねがいします。 (2レコードずつ分割する例) sample.csv ヘッダ1,ヘッダ2,ヘッダ3,ヘッダ4 aaa@aa.aa,123,あいうえ,111-111 bbb@bb.bb,456,かきくけ,222-222 ccc@cc.cc,789,さしすせ,333-333 ddd@dd.dd,012,たちつて,444-444 eee@ee.ee,345,なにぬね,555-555 fff@ff.ff,678,たちつて,666-666 ↓↓↓ ☆sample_1.csv ヘッダ1,ヘッダ2,ヘッダ3,ヘッダ4   →各ファイルにヘッダも入れたいです。 aaa@aa.aa,123,あいうえ,111-111 bbb@bb.bb,456,かきくけ,222-222 ☆sample_2.csv ヘッダ1,ヘッダ2,ヘッダ3,ヘッダ4 ccc@cc.cc,789,さしすせ,333-333 ddd@dd.dd,012,たちつて,444-444 ☆sample_3.csv ヘッダ1,ヘッダ2,ヘッダ3,ヘッダ4 eee@ee.ee,345,なにぬね,555-555 fff@ff.ff,678,たちつて,666-666

  • 選択による表示の可否を含めた複雑な計算表について

    下記のような計算表を作りたいのですが… AA  1  2  3  4 BB  11  12  13  14  15     ※AAのチェックによって表示され、選択可能    <例>    ・AA-1を選択するとBB-11,12のみ表示して1つのみ選択可能    ・AA-2を選択するとBB-11,12,14のみ表示して   〃    ・AA-3を選択するとBB-11~15表示して     〃 CC  テキストボックスでユーザ入力 DD  テキストボックスでユーザ入力 EE  CC×DD×<AAのチェックとBBのチェックによる数字>     <例>     ・BBの<例>と同じ条件の元で      AA-1---BB-11→15(チェックにより掛ける数字)      〃 ---〃 12→18( 〃 )      AA-2---BB-12→22( 〃 )      〃 ---〃 14→27( 〃 )      AA-3---BB-13→31( 〃 )      〃 ---〃 15→35( 〃 ) FF  Aa  Bb  Cc  Dd  Ee       ※AAとBBの条件と連動して、表示され選択可能      <例>      ・AA-1を選択するとBB-11,12のみ表示し、1つのみを選択。FF-Aaのみ表示      ・AA-2を選択するとBB-11,12,14のみ表示し、   〃  。FF-Aa,Ccのみ表示      ・AA-3を選択するとBB-11~15表示し、    〃    。FF-Bb,Ccのみ表示 GG  セレクトボックスで4割~8割から選択 HH  a  b  c  d  e  f  g      BBの選択内容とFFの選択内容によって表示(選択は1つのみ) ※ 後の計算によって数字変更     <例>      BB-11---FF-A---HH-a~c(a:3,b:6,c:10)      〃 ---〃 B---〃 a,c,f(a:4,c:5,f:8)      〃 ---〃 C---〃 c~g(c:4,d:5,e:8,f:14,g:18)      BB-12---FF-A---HH-a~c(a:11,b:14,c:18)      〃 ---〃 B---〃 b,d,f,g(b:7,d:9,f:12,g:13)      〃 ---〃 C---〃 c~f(c:1,d:3,e:9,f:11) 「計算」ボタンと「リセット」ボタン  ※「計算」ボタンをクリックするとIIとJJ」に計算内容を表示  ※「リセット」ボタンをクリックすると、すべてリセットさせる。AAのみ表示を残す II  EE×GG JJ  (AAとBBとFFのチェックによる数字)×(20-HH)×II÷2    <例>    AA-1---BB-12---FF-A→12(掛ける数字)×(20-HH-a)×II÷2    〃1---BB-12---〃 B→17(掛ける数字)×(20-〃c)×〃÷2                     ・                     ・ -------- 計算が大きく2つに別れて計算という形になるのですが、 <<1>> -AA-1---BB-11---FF-A-|→EEで必要な数字15 | | |-〃12---〃 -|→     〃 18 | | -〃2---BB-11---FF-A, C-|→EEで必要な数字20 | | |-〃 12--- 〃 -|→   〃  22 | | |-〃 14--- 〃 -|→   〃  27 | | -〃3---BB-11---FF-B,E-|→EEで必要な数字28 |   |-〃 12--- 〃 -|→   〃  30 |   |-〃 13--- 〃 -|→   〃  31 |   |-〃 14--- 〃 -|→   〃  32 |   |-〃 15--- 〃 -|→   〃  35 |         ・ -         ・ <<2>> ※ < >の数字は掛ける時に必要な数字 -BB-11---FF-A---HH-a<3> | |   |  |--〃b<6> | |   |  |--〃c<10> | |   | | |   FF-B---HH-a<4> | |   |  |--〃c<5> | |   |  |--〃f<8> | |   | | |   FF-C---HH-c<4> | |   |  |--〃d<5> | |   |  |--〃e<8> | |   |  |--〃f<14> | |   |  |--〃g<18> | | -BB-12---FF-A---HH-a<11> | |   |  |--〃b<14> | |   |  |--〃c<18> | |   | | |   FF-B---HH-b<7> | |   |  |--〃d<9> | |   |  |--〃f<12> | |   |  |--〃g<13> | |   | -      ・ |      ・ ※ < >の数字は掛ける時に必要な数字 <例>AA-1---BB-12---FF-A<12>×(20-HH-a<3>)×II÷2 という感じになります。 大変分かりにくいとは思いますが、ご教授の程よろしくお願いします。

  • シェル(ksh)でテキスト文書を変換

    以下のようなテキストファイルで、 3回目に出現する「111」を「222」に変換 するにはどのようにすればよいでしょうか? よろしくお願いします。 <元> AA111B111AAA111DDD111 A111C111DDDDDD111EEEE ~ <結果> AA111B111AAA222DDD111 A111C111DDDDDD222EEEE

  • SQLで○○の値以外を持っているレコードを抽出しないという条件を作りた

    SQLで○○の値以外を持っているレコードを抽出しないという条件を作りたいのですが・・・ 例えばこんな感じのテーブルがあったとします。 A1 A2 A3 -- -- -- AAA AA 111 AAA AB 111 AAA BB 222 BBB BB 111 CCC AA 111 CCC AC 555 DDD BB 222 EEE AA 111 EEE AC 333 EEE BB 777 A2の列に「BB」の値"しか"持っていないレコードを抽出したいのです このテーブルで言えば返りは BBB BB 111 DDD BB 222 と期待しています。 値BBのみしか持ってない条件の作り方を御教示願えませんでしょうか。 また、A2の値も文字数以外は規則性があるわけではないので無限パターンです。 詳しい方よろしくお願いします。

  • スペース区切りのテキストデータ

    VB2005.netを使っています。 スペース区切りの2つのテキストデータが 2つのTEXTBOX内あります。 AA BBB CCC DD EEE FF GGG HHH II JJJ AA LLL MMM NN OOO FF QQQ RRR SS TTT このAAの列とCCC列を抜き出して表示させ、 AA CCC-MMM FF HHH-RRR といった計算の後の数字を行にして表示 させたいのですが、何かよい方法があるでしょうか? よろしくお願いします!

  • diffコマンド結果詳細内容について

    diffコマンド結果詳細内容について 以下、実行ログになります。 test_svrver33%cat aa 123 456 789 aaa bbb ccc ddd test_svrver34%cat bb 123 456 ccc ddd test_svrver35%diff aa bb 3,5d2 < 789 < aaa < bbb test_svrver36% diffコマンドの実行結果1行目の 3,5d2 について 詳しく知りたいのですが 3,5 については3行目~5行目だと わかったのですが、d2 についてどうしても調べきれなかったので ご教授よろしくお願い致します。

  • 【Perl】テキストファイルの処理方法について

    テキストファイルの一括処理をしたいです。 同じ形式で書かれている下記のような ファイルが複数個あり全てのファイルの 同フィールドだけ抜き出し、 抜き出した全てのデータを右側列にコンマ区切りで並べて 出力させたいのですがうまく並べられません。 配列がうまく使えていないと思うのですが アドバイスをいただけませんでしょうか。 データは&で区切られておりこの例では左から3番目のフィールドを 処理の対象としてます。 file01 A&111&222&333& A&444&555&666& A&777&888&999& file02 A&aaa&bb&cc& A&ddd&ee&fff& A&ggg&hhh&iiii& file03 A&abab&bnb&ccc& A&abab&bnb&ccc& A&abab&bnb&ccc& A&abab&bnb&ccc& 希望出力結果 222,bb,bnb, 555,ee,bnb, 888,hhh,bnb, ,,bnb, 希望結果のようなファイルを出力させたいです。 よろしくお願いします。

  • 改行コードの変換について

    OS:Solaris2.6 改行コードをunixからms-dosへ、ms-dosからunixへ変換したいと思っています。 ながれとしては、ms-dosで作成したファイルをunixのほうで編集(プログラム) して、再びms-dosに戻すといったことがしたいと思っています。 そこで、 nkf -e aaa | tr '\r\n' '\n' > bbb nkf -e ccc | tr '\n' '\r\n' > ddd aaa:ms-dos ccc:編集後のファイル これでできると思ったのですが、dddの改行コードの表示がE'で Macintoshの改行コードになってしまします。 また、bbbのファイルですが改行が2回行われてしまいます。 例 aaa のファイルの内容 123 456 bbb のファイルの内容 123 456 どのようにすれば、解決できるか教えていただけないでしょうか? お願いします。

  • テキストデータをバイナリデータに変換したい

    テキストファイルに以下のデータがあるとします。 テキストデータの中身、 「 000E6D4181AA,1234567890ABCDEF 0123456789AB,0100000000000000 050505AAAAAA,0200000000000000 070707BBBBBB,0300000000000000 012345CCCCCC,0400000000000000 cdef01DDDDDD,0500000000000000  ・  ・  ・ 」 12桁の数値(16進数)と16桁の数値(16進数)を「,」で区切ります。1行の終端は改行しています。 このテキストファイルにあるデータを以下のバイナリ形式に変換させたいのです。バイナリ形式の各行の16バイト目は、テキストデータにはデータがないので、「00」とします。「,」で区切ったバイナリ形式は「2C」になると思います。 テキストデータの左上から順に「00」は以下の、左上から順の「00」に対応します。 バイナリデータの中身、 「 00 0E 6D 41 81 AA 2C 12 34 56 78 90 AB CD EF 00 01 23 45 67 89 AB 2C 01 00 00 00 00 00 00 00 00 05 05 05 AA AA AA 2C 02 00 00 00 00 00 00 00 00 07 07 07 BB BB BB 2C 03 00 00 00 00 00 00 00 00 01 23 45 CC CC CC 2C 04 00 00 00 00 00 00 00 00 CD EF 01 DD DD DD 2C 05 00 00 00 00 00 00 00 00  ・  ・  ・ 」 ソースコードでの例、 テキストデータ1行目の1つ目の「,」までのデータ「000E6D4181AA」を、メモリ領域に読み込む。2桁の数値を1バイトで格納する。 つまり、 char buf[6]とすると、 buf[0]=0xAA buf[1]=0x81 buf[2]=0x41 buf[3]=0x6D buf[4]=0x0E buf[5]=0x00 とこのようにメモリに格納したいのです。 格納するバイトオーダーはリトルエンディアン方式とします。 以上で、質問を終わりますが、質問が上手くできていないと思いますので、説明に不備があるかもしれません。その時はお手数ですが、連絡下さい。

専門家に質問してみよう