前行の部分を次行に次々コピーするNo.04887
なむnomoto さん 05/10/25 15:37
 
 教えて下さい。    なむnomotoです

 置換でできると思うのですが解りません。

2703_,0462b19(05):漢字漢字。漢字
2703_,0462b20(01):漢字。漢字漢字
2703_,0462b21(09):漢字漢字漢字。
2703_,0462b22(18):漢字。漢字漢字
2703_,0462b23(07):漢字漢字漢字。

  とある括弧で囲まれた (05) などの部分を、そのまま
  順送りに次々と次行の括弧で囲まれた部分にコピーするには、
  どうすれば良いのでしょうか?
  つまり(05)などの部分を、下の行に移動するだけの事なんですけど。
     置換で
  \([0-9]+\)\f:.*\n.*\f\([0-9]+\)
  \1\0
  とすると、1行目の括弧で囲まれた部分が消えてしまい、
  1行おきの隔行作業になってしまいます。
   
−−−

[ ]
RE:04887 前行の部分を次行に次々コピーすNo.04888
ENCODINGSHIFTJIS さん 05/10/25 18:30
 
解法1
カーソルを最終行-1の数字位置に置いて、から
選択開始、)まで下検索、カット、↓、ペースト、↑↑、(まで上検索
を繰り返す、
キー記録/再生
だいたいの方針はこんな感じで、どうでしょう

[ ]
RE:04888 前行の部分を次行に次々コピーすNo.04889
ENCODINGSHIFTJIS さん 05/10/25 18:34
 
解法2
固定桁であれば、BOX選択コピペも使えるでしょう

[ ]
RE:04889 前行の部分を次行に次々コピーすNo.04892
なむnomoto さん 05/10/25 22:01
 
>解法2
>固定桁であれば、BOX選択コピペも使えるでしょう

   有り難うございました。
   原始的方法がちゃんとあった(^^;)
  おお確かにそうです。
  キー操作の記憶/実行 の前に、コピペで小さなファイルで実験し、スクリプとを
  通してみました。「秀丸」エディタでは巧く行きましたが、スクリプトに
  合致していません。

   残念! 巧く行かない。
  ([0-9)の位置の問題ではなさそうです。トホホ。
   ううむ。
     ・・・・下手な思いつき、疲労に似たり(^^;)
−−−

[ ]
RE:04892 前行の部分を次行に次々コピーすNo.04893
ENCODINGSHIFTJIS さん 05/10/26 00:05
 
Box選択では、Box選択開始、Shift+→→、で1行分選択
ホイールスクロールあるいはShift+PageDownで複数行できます。

解法3
一回の全置換でできなければ、2回ではどうか?

^(.*?\()(.*?\))(.*)$

\1\3\n\2

^(.*?\))\n(.*?\()

\2\1

エディター的トリッキー かも、
スクリプトを書いたほうがズートわかり易い。

[ ]
RE:04893 前行の部分を次行に次々コピーすNo.04895
山紫水明 さん 05/10/26 08:11
 
 こういうことでいいですか?

//---------------------------------------------------//
//検索での表示を「範囲選択」にして実行
disabledraw;
while ( 1 ) {
    searchdown "(?<=\\()[0-9]+(?=\\))", regular;
    if( !result ) break;
    $s1 = gettext( seltopx, seltopy, selendx, selendy, 1 );
    insert $s2;
    $s2 = $s1;
}
endmacro;
//---------------------------------------------------//

     では, (^^)/~
                                        山紫水明
                                        SANSHISUIMEI

[ ]
RE:04895 前行の部分を次行に次々コピーすNo.04900
なむnomoto さん 05/10/29 02:04
 
 山紫水明さん
                  なむnomotoです
> こういうことでいいですか?

 上手く行きました。バッチリ。ありがとうございます。

>//検索での表示を「範囲選択」にして実行
 というのが理解できませんでしたが、結果は期待通りです。
 やっぱりマクロですね。
 BOX範囲選択して、1行下に貼り付けるのは、数千行のファイルでは
 ちょっとシンドイですしね。

   マクロの内容が理解できてませんが、理解しようとすると相当に
 苦労しそうです。マクロヘルプでもとても解りません。
 ・・・・・こちらの方が大問題です(+_+)。

[ ]
RE:04900 前行の部分を次行に次々コピーすNo.04901
なむnomoto さん 05/10/29 02:07
 
 追加です。

 書き換えファイルを、新スクリプトで実行したら、
 期待通りになりそうです。
   目出度し目出度しパチパチと手をたたいて喜びました。


[ ]
RE:04900 前行の部分を次行に次々コピーすNo.04902
ENCODINGSHIFTJIS さん 05/10/29 19:08
 
>BOX範囲選択して、1行下に貼り付けるのは、数千行のファイルでは
 ちょっとシンドイですしね。

BOX範囲選択に慣れてないなら、日々の練習が必要です

1.第一行の選択する項目の先頭にカーソル
2.BOX選択開始
3.CTRL+END (ファイルの最後に移動)
4.選択する項目の末尾に移動

[ ]
RE:04902 前行の部分を次行に次々コピーすNo.04903
なむnomoto さん 05/10/30 13:51
 

 ご教授有り難うございます。      なむnomoto

>>BOX範囲選択して、1行下に貼り付けるのは、数千行のファイルでは
> ちょっとシンドイですしね。
>
>BOX範囲選択に慣れてないなら、日々の練習が必要です
>
>1.第一行の選択する項目の先頭にカーソル
>2.BOX選択開始
>3.CTRL+END (ファイルの最後に移動)
>4.選択する項目の末尾に移動

 確かに、CTRL+END これで数千行ファイルが簡単に範囲選択できますね。
 シンドくないか。(^^;)  ところが、ごくまれに、例外があるので、
 油断は禁物ですが、BOX選択 方法は滅多に使わないけど、便利な方法
 ですね。有り難うございました。
 

[ ]