巨大ファイルの編集におけるエディタのスクリプトの活用方法

このQ&Aのポイント
  • DCBA、WXYZ、OPQRの固まった行のみを選択して、カットするスクリプトの作成方法を教えてください。
  • 巨大なテキストファイルを編集する際に、エディタのスクリプトを活用することで効率的な行の選択とカットが可能です。特にDCBA、WXYZ、OPQRの行が固まって存在する場合、スクリプトを用いてこれらの行のみを選択し、削除することができます。
  • viviかサクラエディタで巨大ファイルの編集を行う際、DCBA、WXYZ、OPQRの行のみを抜き出すスクリプトを作成することで効率的に作業を進めることができます。行ごとにif文で判断すると時間がかかるため、スクリプトを活用して行の選択とカットを行いましょう。
回答を見る
  • ベストアンサー

エディタのスクリプトによる巨大ファイルの編集

唐突ですが、 0001,ABCD-00001,あかさたな,3 0002,ABCD-00002,はまやらわ,2 0003,ABCD-00003,あいうえお,4 0004,ABCD-00004,かきくけこ,3 0005,ABCD-00005,なにぬねの,2 0006,ABCD-00006,たちつてと,6 0007,ABCD-00007,あいうえお,8 0008,DCBA-00001,かきくけこ,5 0009,DCBA-00002,なにぬねの,6 0010,DCBA-00003,たちつてと,8 0011,WXYZ-00001,なにぬねの,5 0012,WXYZ-00002,たちつてと,8 0013,WXYZ-00003,あいうえお,5 0014,WXYZ-00004,かきくけこ,2 0015,WXYZ-00005,たちつてと,4 0016,WXYZ-00006,なにぬねの,3 0017,WXYZ-00007,たちつてと,2 0018,ZYXW-00001,あいうえお,6 0019,ZYXW-00002,かきくけこ,8 0020,ZYXW-00003,なにぬねの,5 0021,ZYXW-00004,たちつてと,6 0022,ZYXW-00005,なにぬねの,3 0023,ZYXW-00006,たちつてと,2 0024,OPQR-00001,あいうえお,6 0025,OPQR-00002,かきくけこ,8 0026,OPQR-00003,たちつてと,5 0027,RQPO-00001,なにぬねの,6 0028,RQPO-00002,たちつてと,8 0029,RQPO-00003,なにぬねの,5 0030,RQPO-00004,たちつてと,6 のような65536行以上の巨大なテキストファイルで、 例えば、DCBA、WXYZ、OPQRの行だけにするようなスクリプトを、 viviかサクラエディタでつくるにはどうすればよいでしょうか。 巨大ファイルのためif文で一行毎に判断すると非常に時間がかかります。 DCBA、WXYZ、OPQRの行は固まりで存在するので、不要な行を選択して、カットするようにしたいです。

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4845/10255)
回答No.4

NO1です。 「6文字目からがDCBA WXYZ OPQR」ということでよければ、 findstr "^.....DCBA ^.....WXYZ ^.....OPQR" ファイル名 >出力ファイル名

nayamerunikki
質問者

お礼

ありがとうございます。これもうまくいきました。

その他の回答 (3)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

サクラエディタのgrepでは、正規表現が使えます。 http://sakura-editor.sourceforge.net/htmlhelp/HLP000006.html この例だったら 先頭から 数字だけ カンマ DCBA,WXYZ,OPQRのいずれか と続いている行を探す、ということになります。正規表現を有効にして、条件を ^[0-9]+,(DCBA|WXYZ|OPQR) とすればいいはずです。

nayamerunikki
質問者

お礼

ありがとうございました。うまくいきました。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

サクラエディタにはgrep検索機能があったはず http://sakura-editor.sourceforge.net/htmlhelp/HLP000067.html

nayamerunikki
質問者

お礼

ご回答ありがとうございます。しかし、大変申し訳ありません。質問が間違えていました。 ファイルは、 0001,ABCD-00001,あかさたな,3, 0002,ABCD-00002,はまやらわ,2,DCBA-00002 0003,ABCD-00003,あいうえお,4, 0004,ABCD-00004,かきくけこ,3, 0005,ABCD-00005,なにぬねの,2,DCBA-00001 0006,ABCD-00006,たちつてと,6, 0007,ABCD-00007,あいうえお,8, 0008,DCBA-00001,かきくけこ,5, 0009,DCBA-00002,なにぬねの,6, 0010,DCBA-00003,たちつてと,8, 0011,WXYZ-00001,なにぬねの,5,WXYZ-00003 0012,WXYZ-00002,たちつてと,8, 0013,WXYZ-00003,あいうえお,5, 0014,WXYZ-00004,かきくけこ,2,OPQR-00003 0015,WXYZ-00005,たちつてと,4, 0016,WXYZ-00006,なにぬねの,3, 0017,WXYZ-00007,たちつてと,2,OPQR-00003 0018,ZYXW-00001,あいうえお,6, 0019,ZYXW-00002,かきくけこ,8,WXYZ-00003 0020,ZYXW-00003,なにぬねの,5, 0021,ZYXW-00004,たちつてと,6, 0022,ZYXW-00005,なにぬねの,3, 0023,ZYXW-00006,たちつてと,2,RQPO-00002 0024,OPQR-00001,あいうえお,6, 0025,OPQR-00002,かきくけこ,8,WXYZ-00003 0026,OPQR-00003,たちつてと,5,RQPO-00004 0027,RQPO-00001,なにぬねの,6, 0028,RQPO-00002,たちつてと,8,RQPO-00004 0029,RQPO-00003,なにぬねの,5, 0030,RQPO-00004,たちつてと,6, のようになっており、 やりたいこととしては、2列目にDCBA、WXYZ、OPQRを含む行だけ残す、 ということになります。

  • notnot
  • ベストアンサー率47% (4845/10255)
回答No.1

そんなツールを使わなくても、コマンドプロンプトで、 findstr "DCBA WXYZ OPQR" ファイル名 >出力ファイル名

nayamerunikki
質問者

お礼

ご回答ありがとうございます。しかし、大変申し訳ありません。質問が間違えていました。 ファイルは、 0001,ABCD-00001,あかさたな,3, 0002,ABCD-00002,はまやらわ,2,DCBA-00002 0003,ABCD-00003,あいうえお,4, 0004,ABCD-00004,かきくけこ,3, 0005,ABCD-00005,なにぬねの,2,DCBA-00001 0006,ABCD-00006,たちつてと,6, 0007,ABCD-00007,あいうえお,8, 0008,DCBA-00001,かきくけこ,5, 0009,DCBA-00002,なにぬねの,6, 0010,DCBA-00003,たちつてと,8, 0011,WXYZ-00001,なにぬねの,5,WXYZ-00003 0012,WXYZ-00002,たちつてと,8, 0013,WXYZ-00003,あいうえお,5, 0014,WXYZ-00004,かきくけこ,2,OPQR-00003 0015,WXYZ-00005,たちつてと,4, 0016,WXYZ-00006,なにぬねの,3, 0017,WXYZ-00007,たちつてと,2,OPQR-00003 0018,ZYXW-00001,あいうえお,6, 0019,ZYXW-00002,かきくけこ,8,WXYZ-00003 0020,ZYXW-00003,なにぬねの,5, 0021,ZYXW-00004,たちつてと,6, 0022,ZYXW-00005,なにぬねの,3, 0023,ZYXW-00006,たちつてと,2,RQPO-00002 0024,OPQR-00001,あいうえお,6, 0025,OPQR-00002,かきくけこ,8,WXYZ-00003 0026,OPQR-00003,たちつてと,5,RQPO-00004 0027,RQPO-00001,なにぬねの,6, 0028,RQPO-00002,たちつてと,8,RQPO-00004 0029,RQPO-00003,なにぬねの,5, 0030,RQPO-00004,たちつてと,6, のようになっており、 やりたいこととしては、2列目にDCBA、WXYZ、OPQRを含む行だけ残す、 ということになります。

関連するQ&A

  • VIVI(エディタ)のスクリプトについて

    OS:WindowsVista Ultimate SP1 viviバージョン:2.0375 Excelバージョン:2003 SP3 仕事でviviエディタを使用しているものです。 宜しくお願いします(viviは全くの初心者です・・・) あるフォルダ内のファイル群からgrepを使用して出た結果をCSVで保存します。 その一連作業を検索文字列だけ変えて数十回ほど繰り返し作業しています。 そこでgrepで使用する検索文字列をExcelVBAで収集し文字列操作で viviのスクリプトを作成してはき出されたスクリプトファイルで一気にgrepを 行うと同時に保存できないかと考えております。 そこで以下の条件を満たしたスクリプトを記述する場合どのように記述するか教えて下さい。  (1)検索文字列、ファイル種別(*.*)、ディレクトリを指定した状態でのgrep   (他はデフォルトです。)  (2)grep終了後、検索文字列で保存(csv形式) ExcelVBAの部分は大体出来たのですがスクリプトが全くわかりません。 サイトで色々調べたのですが、見つからず(分からないだけかも)困っている状態です。 すいませんがgrep-保存する場合のスクリプト内容を教えていただけないでしょうか。 宜しくお願い致します。

  • テキストファイルを読み込むには・・・。

    テキストファイルの中身が以下のように abcd,efg,hij,klmn↓ opqr,stu,vwx,yzab↓ cdef,ghi,jkl,mnop↓ .         .          .         .         のように何行あるか分からない状態で1行ずつ,と\0で区切って4つの文字列を取り出したい(上のテキストファイルの1行目だと[abcd][efg][hij][klmn]のように)のですがどのようにすればいいのでしょう?できれば余分なメモリを確保するやり方を避けたいです。

  • エディタで効率的な切り出し方法

    エディタで効率的な切り出し方法 CSVファイルがあります。50万行くらいのボリュームがあります。 このCSVを5万行づつ分けて別ファイルとしたいと思っています。 すぐに思いつくのは、同一ファイルを10個コピペ。 1つ1つファイルを開いて、 1~5万行目まで残して残りを削除。 50001から100000まで残して残りを削除。 というような事をすれば50万行のファイルを分割することはできます。 ただ、これだと手間がかかります。なんとか良い方法で10万ファイル作る方法はあるでしょうか? サクラエディタ、秀丸エディタでできればと思います。 Excel 2007ならできるかも知れませんが、持っていません・・・ お願いいたします。

  • 一般的なエディタで1行目を対象としたGREP

    一般的なエディタで1行目の文字列検索(GREP)はできるものでしょうか。 (例) テキストファイルの一番上に 「Option Explicit」という文字があれば、リストを表示する。 #ちなみに私はVIVIを使っています。(素人レベル)

  • エディターでは改行なのにメモ帳では↑

    Perlでプログラミングしています。 原因不明の改行に悩まされています。 あるスクリプトを通すと2行だった行が1行になります(csvファイル)。 それはさておき、 エディターではちゃんと2行なのにメモ帳で開くと1行です。 エディターはSHIT-JISのようです。 メモ帳の文字コードはなんなのでしょうか?

    • ベストアンサー
    • Perl
  • サクラエディタのgrepのデフォルトのファイル名を現在開いてるファイルにするには?

    サクラエディタでGREPを使うと、 ファイル名がインストール時は*.*になっていますが、 現在サクラエディタで開いているファイル名が常にそこに入るようにしたいのですが、 どこで設定できるでしょうか? 毎回手打ちするしかないのでしょうか? 単に、現在のファイル内での検索結果を一覧にして出して、 それをえらんでその行にジャンプしたい、というのが目的です。 あと、まったく別の質問ですが、 日付+時刻の挿入を、1回の操作で行うことは可能でしょうか? デフォルトだと、日付と時刻が別のショートカットになってます。

  • サクラエディタで特殊文字ファイルを開きたい

    サクラエディタで特殊文字があるファイルを開くと、違う文字で表示されてしまいます。 私が言っている特殊文字は外国のアルファベットの事で、 Aの上に丸がついたり、Cに尻尾みたいなのがついてたり(フランス語)する文字の事です。 Notepadで開くとちゃんと特殊文字で見れるのですが、 サクラで開くと普通のAやCで表示されてしまいます。 サクラではこのような文字は表示できないのでしょうか。 それとも何か設定があるのでしょうか。 よろしくお願いします。

  • 二つのファイルから一行ずつ取り出して計算

    aaa.txt と bbb.txtというファイルがあり、それぞれ 1.1 0.1 -0.2 0.9 … といった感じで一行ずつ数値が入っています。 シェルスクリプトを用いて、 この二つのファイルから一行ずつ取り出して足し算を行いたい (例えばaaa.txtの一行目が1.1、bbb.txtの一行目が0.9なら1.1+0.9=2.0) のですが、どうすれば良いでしょうか。

  • ファイルを行ごとに比較するシェルスクリプトについて

    ファイルを行ごとに比較するシェルスクリプトをご教授ください。 例えば(master.txt)(a.txt)(b.txt)(c.txt)(ok.txt)(ng.txt)と4つのファイルがあり、 (master.txt)と(a.txt)の行を比較し(a.txt)の中のある行が(master.txt)の行と一致した場合(ok.txt)に (master.txt)の行と一致しなかった場合(ng.txt)に入れる。 その後(master.txt)と(b.txt)の比較し(a.txt)が使用したものと同じ(ok.txt)or(ng.txt)に入れる・・・ といったように繰り返していくシェルスクリプトはどのようにして作成するのでしょうか? txtファイルの中の行はランダムに入っており、x.txtの一行一行ををmaster.txtの全行と比較する必要があります。 自分で作ってみたものは、while文を2重で使い一行ずつ取り出しcase文で行が一致した物を(ok.txt)に入れる 所までは成功しているのですが、複数回繰り返す時にどのようなロジックで不一致行を(ng.txt)に入れる ことができるのかが考え付きませんでした。 よろしくお願いいたします。

  • サクラエディターについて

    サクラエディターについて マクロのサイトを見てもこれと言ったサイトを見つける事ができませんので 質問させて頂きます。 【内容】 テキストファイルを先頭から末行までをループ処理で 1行づつ判定してキーワードxxxがあれば行を削除したいと考えております。 記述内容をご教示頂けないでしょうか? またその辺の詳しいサイトをご存知の方はご教示いただけないでしょうか? よろしく御願いします。

専門家に質問してみよう