• ベストアンサー

emacsのreplace-regexpで改行を指定する方法

例えば aaa, bbb, ccc, ddd, eee のような文字列の ","を改行に置換して aaa bbb ccc ... のようにする操作で(query-)replace-regexp<ESC %>を使って行いたいのですが、RETURNを指定するにはどのようにしたら良いのでしょうか? ESC % とうちこみ、 Query replace , with: <RETURN> と単純に入力しただけではうまく行きません。。。 以上宜しくお願い致します。

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

  • ベストアンサー
  • HOGERA3
  • ベストアンサー率35% (50/139)
回答No.1

>with: <RETURN> with: C-qC-j ([Ctrl]を押しながら[q], [Ctrl]を押しながら[j]) と入力してから[return]キー([Enter]キー)を 押せばうまくいくと思います。

tk_1980024
質問者

補足

アドバイスありがとうございます。 試したのですが、CTRL-q CTRLjとした時点で一つ目のマッチした部分で改行されてそれで終了してしまいました… なにか方法が違うのでしょうか? CTRL-j はcommand-new-line-indent CTRL-q はexit-recursive-edit とショートカットが割りついています。 以上お願いします。

その他の回答 (2)

  • nightowl
  • ベストアンサー率44% (490/1101)
回答No.3

.emacs が悪さをしているとは考えられないのでしょうか。 emacs -q は試されました? C-q がおかしければその後何を入力しても効果はないでしょうね。 逆に言えば、C-j が何に割り当てられていてもこの場合は関係ないわけですが。 なぜ標準では M-C-c の exit-recursive-edit が C-q に束縛されているのか、 なぜこの質問が「プログラミングカテ」に投げられているのか、 なぜ真剣に答えを聞きたい割にはお使いの Emacs のバージョンや .emacs の抜粋が書いてないのか、興味は尽きません。 ま、どっちみち聞きっぱなしで返事はないんでしょうけど。

  • HOGERA3
  • ベストアンサー率35% (50/139)
回答No.2

>なにか方法が違うのでしょうか? 以下は私が行った手順です。 (<cr>は[Enter]キーを押したことをあらわします) 1. ESC-% 2. Query replace: ,<cr> 3. Query replace with: C-qC-j 4. <cr> 5. Query replacing with ^J: (? for help)y 6. Query replacing with ^J: (? for help)y ...(気が済むまでyを入力) 7. Replaced 4 occurrences で終了。 >CTRL-j はcommand-new-line-indent >CTRL-q はexit-recursive-edit >とショートカットが割りついています。 私の場合は C-j  newline-and-indent C-q  quoted-insert となってます(M-x describe-bindings で確認)。

tk_1980024
質問者

お礼

有難うございます。 key-bindingが違っていて最初は上手く行きませんでしたが、教えて頂いたとおりで上手く動作させることが出来ました。 お礼遅れましたがどうも有難うございます。

関連するQ&A

  • RegExpでメールアドレスを取り出す方法

    いつもお世話になっております メールアドレスのString  Aさん <aaa@bbb.ne.ne.jp>,Bさん <bbb@bbb.ne.jp>,Cさん <ccc@ddd.jp.com> から  aaa@bbb.ne.ne.jp  bbb@bbb.ne.jp  ccc@ddd.jp.com を取り出すために正規表現のRegExpを用いました ですが、Pattarnに <.*> を用いると  aaa@bbb.ne.ne.jp>,Bさん <bbb@bbb.ne.jp>,Cさん <ccc@ddd.jp.com がhitしてしまいます。(Global=True、Falseのどちらでも) 何とかうまく3つのメールアドレスを取得する方法はないでしょうか よろしくお願いします

  • CSVに外部テキストファイルを列として追加する方法

    こんにちは。 CSVファイル(base.csv)の先頭列に、別のテキストファイル(add.txt)の中身を新規の列として挿入したいと考えているのですが、よい方法がわかりません。。。 どうのような方法を使えば対応することができるでしょうか? どうぞよろしくお願いいたします。 ■CSVファイル(master.csv) title,developer_name,seller_name,primary_genre_name,application_url AAA,BBB,CCC,DDD,EEE AAA,BBB,CCC,DDD,EEE AAA,BBB,CCC,DDD,EEE AAA,BBB,CCC,DDD,EEE ■テキストファイル(add.txt) id 000 111 222 333 ↓ ■目標としたファイル(master.csv) id,title,developer_name,seller_name,primary_genre_name,application_url 000,AAA,BBB,CCC,DDD,EEE 111,AAA,BBB,CCC,DDD,EEE 222,AAA,BBB,CCC,DDD,EEE 333,AAA,BBB,CCC,DDD,EEE

  • VBAでCSV内にある改行を取る方法

    あるシステムが吐くcsvファイルの項目の中に改行が入っているものがあります。 例) 01,aaa,bbb(改行)bbb,ccc(改行) 02,ddd,eee,fff(改行) 03,ggg(改行)ggg,hhh,iii(改行) このCSVファイルをエクセルのマクロで読み込んでシートに展開したい のですが、項目中にある改行で別レコードを認識してしまいます。 結果) A B C D ---+---+---+--- 01 aaa bbb  bbb ccc 02 ddd eee fff 03 ggg ggg hhh iii これを以下のようにしたいのですが・・・ A B C D ---+------+------+---- 01 aaa bbbbbb ccc 02 ddd eee fff 03 gggggg hhh iii どうやればよいでしょうか? ご教授お願いいたします。

  • VBAの正規表現

    VBAで正規表現による置換をしたいです。 以下のような行が複数あります。 1 aaa bbb ccc ddd 2 aaa bbb ccc ddd 3 aaa bbb ccce ddd 4 aaa bbb eccc ddd ccc の部分のみ置換したいです。 dim hensuu as string dim replace as string replace = eee hensuu = ccc (省略) strPattern = "(\s*)" & hensuu & "(\s+)" rep = RegExpObj.Replace(buf, "\1" & replace & "\2") 行数1,2 のみを置換したのですが、4も置換されてしまいます。 (\s*) の "*" が良くないのは理解していますが、"+" にしてもうまくいきません。 どなたかどのようにしたら1,2のみ置換できるようになるかをご教授お願いできませんでしょうか よろしくお願いいたします。

  • [シェルの質問]改行と結合

    bsh初心者です。 よろしくお願いします。 1)下記のような","で区切られている場合、","を見つけたら  改行して出力したいです。 [入力] aaa,bbb,ccc, ddd,eee,fff [出力] aaa, bbb, ccc, ddd, eee, fff 2)下記のように、ある文字"aaa"をみつけたら、その次の行と結合して  出力したいです。 [入力] aaa: Hello! [出力] aaa:Hello! とこんな感じです。 awkとか使わないとできないでしょうか? awkはあんまり詳しくないので、できたら 記述例をいただけると幸いです よろしくお願いします。

  • 正規表現について

    正規表現を使用して文字列の置換(ereg_replace)をしたいと思うのですが、 うまくいかず悩んでおります。。 以下の文字列があったとします。 【AAA】【BBB】【CCC】DDD 文字列の中から先頭から始まる【】でくくられたものだけ(【AAA】)だけ削除して、 結果を【BBB】【CCC】DDDとしたいのですが、正規表現でどのようにヒットさせればよいのか分りません。 ※【】の中にくる文字はAAAとは限りません。 お手数ですがご教授頂けますでしょうか。

    • ベストアンサー
    • PHP
  • SQL文の書き方

    SQL文の書き方を教えて下さい。 以下の2つのクエリー(1のクエリー&2のクエリー)を1つのクエリーで1度に抽出をかけたいのですがSQL文の書き方がわかりません。 データの発生条件としては TableBのField1は必ずTableAのField1に存在するという条件です。 TableAのField1が「AAA」から「EEE」まである場合は、TableBのField1も必ず「AAA」から「EEE」の範囲内で発生します。 よろしくお願い致します。 1のクエリー ---------------------------------------------------------------- TableA Field1 ---------------------------------------------------------------- AAA AAA AAA BBB BBB CCC DDD DDD EEE EEE EEE ---------------------------------------------------------------- Field1をサマライズしてカウントと名称を取得するクエリー Select Count(TableA.Field1) as RecCount, TableA.Field1 From TableA 結果 RecCount  Field1 3      AAA 2      BBB 1      CCC 2      DDD 3      EEE ---------------------------------------------------------------- 2のクエリー ---------------------------------------------------------------- TableB Field1 ---------------------------------------------------------------- BBB CCC CCC EEE ---------------------------------------------------------------- Field1をサマライズしてカウントと名称を取得するクエリー Select Count(TableB.Field1) as RecCount, TableB.Field1 From TableB 結果 RecCount  Field1 1      BBB 2      CCC 1      EEE ---------------------------------------------------------------- 希望する結果 TableAのRecCount TableBのRecCount TableAのField1 3                   AAA 2         1         BBB 1         2         CCC 2                   DDD 3         1         EEE

  • 抽出して並べ替えたい

    初めまして 非常に悩んでいます。 エクセルシートの列に下記のようにデータが並んでいます。(文字列) AAA bbb ccc (空白) BBB ddd eee (空白) AAA bbb ccc (空白) AAA eee ggg 並べ替え後 AAA AAA BBB bbb eee ddd ccc ggg eee 尚、列上でセル位置は任意で、空白行も任意です。(1つ以上です) できれば関数でお願いします。 VBAの場合、使用したことがないので詳しくお願いします。

  • 文字変換で,を改行されないようにしたい

    下記のスクリプトでファイルから読み込んだ行毎の文字列<>を'=>'に変換後、行の先頭に'を付け足し行の最後に',を付け加えた場合、変な風に改行されてしまいます。 $ cat list1.txt 01<>ああああ 01_01<>あAAA 01_02<>あBBB 01_03<>あCCC 01_04<>あDDD 02<>いいいい 02_01<>いAAA 02_02<>いBBB 02_03<>いCCC 02_04<>いDDD open(IN, "<list1.txt"); @datas = <IN>; close(IN); open(OUT, ">date.txt"); foreach (@datas) { ($a, $b) = split(/<>/, $_); print OUT "'$a'=>'$b',"; } close(OUT); 実行結果 $ cat date.txt '01'=>'ああああ ','01_01'=>'あAAA ','01_02'=>'あBBB ','01_03'=>'あCCC ','01_04'=>'あDDD ','02'=>'いいいい ','02_01'=>'いAAA ','02_02'=>'いBBB ','02_03'=>'いCCC ','02_04'=>'いDDD ', これを下記のように整形するにはスクリプトのどこを直せばよいのでしょうか。 '01'=>'ああああ', '01_01'=>'あAAA', '01_02'=>'あBBB', '01_03'=>'あCCC', '01_04'=>'あDDD', '02'=>'いいいい', '02_01'=>'いAAA', '02_02'=>'いBBB', '02_03'=>'いCCC', '02_04'=>'いDDD', どなたかご教授お願い致します。(上記のスクリプト以外の方法で スマートなやり方などありましたらあわせてご教授頂けますと助かります。)

    • ベストアンサー
    • Perl
  • エクセルで列にあるユニークなデータの個数が知りたい

    おはようございます。 エクセルでA列に以下のようなデータがあるとします。 この中で何種類のデータがあるのかを知りたいのです。 この場合は、AAA,BBB,CCC,DDD,EEEの5種類なので5という答えが欲しいのです。 ただし、A列に入るデータは非常に多岐(800種類以上)に渡ります。 また、印刷を前提としてるためソートなどはできません。 さらに1枚のシートにこのようなデータがいくつかあるので、その決まった範囲内で個数を抽出する必要があります。 なにとぞ皆様のお知恵をお貸しくださいませ。 よろしくお願いします。 AAA AAA BBB CCC AAA DDD DDD BBB DDD DDD EEE EEE

専門家に質問してみよう