タブ区切りのデータから、取り出したいNo.31251
yamasan さん 12/06/06 07:02
 
こんにちは。よろしくお願いします。

タブ区切りの会員データがあります。
行頭に一桁〜5桁の数字があります。その数字の後に、県名があります。

^\d*\t県名\t.+$

この様なデータなのですが、
例えば、北海道だけの県名だけの行を取り出すのは、どうしたら良いのでしょう?
一つの県だけの会員データが必要で、他は、削除したいのです。

^\d*\t北海道\t.+$

これに該当するデータ行だけを取り出したいのです。
よろしくお願いします。

[ ]
RE:31251 タブ区切りのデータから、取り出No.31252
IKKI さん 12/06/06 08:26
 
yamasanさん、こんにちは。ユーザの IKKI です。

> これに該当するデータ行だけを取り出したいのです。
grep (グレップ) という機能がそれを行います。
ヘルプ - 検索系コマンド - grepの実行 をお読みになると良いでしょう。


秀丸エディタ v8.20β18 + HMJRE.DLL v3.41

[ ]
RE:31252 タブ区切りのデータから、取り出No.31253
yamasan さん 12/06/06 08:45
 
IKKIさん、ありがとうございます。

grepというのは、複数のファイル群を検索・置換する時だけに、
用いておりました。

そうか。grepでも良いのですね。ありがとうございます。

grepした結果には、
行頭に、"ファイル名(行番号): "がありますが、
これを削除したら良いと言うことが分かりました。

この行頭の
"ファイル名(行番号): "を表示しないようには出来ないのでしょうか?

無理なことをお尋ねしてスイマセンが、
ご存じでしたら、お願いします。

[ ]
RE:31253 タブ区切りのデータから、取り出No.31254
秀丸担当 さん 12/06/06 09:37
 

grep結果の行番号を取り除くには、正規表現を使った置換をすることで処理する
方法があります。

置換で、

 検索文字列「^[^:]+: 」
 置換文字列「」(何もなし)
 正規表現をON

として全置換すると、除去できます。

マクロにしておくと便利です。
マクロの例:

  $s = searchbuffer;
  $r = replacebuffer;
  #f = searchoption;
  replaceallfast "^[^:]+: ","",regular;
  setsearch $s, #f;
  setreplace $r;

[ ]
RE:31254 タブ区切りのデータから、取り出No.31255
yamasan さん 12/06/06 11:29
 
秀丸担当様
ありがとうございます。マクロにして、保存しておきます。
今後は、マクロで削除するように対処します。
ありがとうございました。助かりました。

[ ]
RE:31251 後方不一致で削除No.31257
yamasan さん 12/06/07 08:53
 
こんにちは。よろしくお願いします。
お教え頂いたタブ区切りの会員データの件です。

^\d*\t県名\t.+$

と言うデータなんですが、
考え方を変えて、後方不一致の行を削除して、
別名で保存しても、同じように希望が叶うのではないかと思いました。

先日、マクロ会議室でHmJre.dllにおける正規表現というのを
お教え頂いたので、

例えば、県名が、"北海道"を取り出したい場合は、

^\d*\t(?!北海道).*\n

で検索して、削除(置換)したら、思ったように、
なっていますが、
この記述に問題はないでしょうか?

後方不一致、前方不一致というのは、自分で考えたことがなく、
間違った使い方じゃないかと不安なので、お教えください。お願いします。

[ ]
RE:31257 後方不一致で削除No.31258
秀丸担当 さん 12/06/07 11:54
 

>例えば、県名が、"北海道"を取り出したい場合は、
>
>^\d*\t(?!北海道).*\n
>
>で検索して、削除(置換)したら、思ったように、
>なっていますが、
>この記述に問題はないでしょうか?

正規表現の後方不一致の記述でも大丈夫だと思います。
grepとの違いとしては、行頭に「^\d*\t」に相当する、数字+タブの文字列が無
い行は残ってしまうことが違うと思います。

[ ]
RE:31258 後方不一致で削除No.31259
yamasan さん 12/06/07 13:49
 
こんにちは。ありがとうございます。

>grepとの違いとしては、行頭に「^\d*\t」に相当する、数字+タブの文字列が無
>い行は残ってしまうことが違うと思います。

わかりました。その都度、確認しながら、併用してみます。
ありがとうございました。ご指導頂き、感謝申し上げます。

[ ]