grep検索結果で行の先頭のファイル名を外No.07387
toom さん 01/02/03 03:09
 
はじめましてTOOMと申します。
grepで検索をかけると検索結果の各行の先頭に
ファイル名と行数が入ってしまい、
検索前と検索後でフォーマットが異なってしまうのですが
先頭にファイル名をいれずにgrepすることは可能でしょうか?

[ ]
RE:07387 grep検索結果で行の先頭のファNo.07388
山紫水明 さん 01/02/03 10:18
 
 toomさん,こんにちは。

》先頭にファイル名をいれずにgrepすることは可能でしょうか?

先頭の部分はタグと呼ばれているようですが,このタグをなくすには,

1.grepの実行後に置換で削除する
検索文字:^[^:]+:
置換文字:(なし)
正規表現
で,全置換をすればいいと思います。
もし,ページ数は残すのでしたら,検索文字を
^[^(]+
として下さい。

2.マクロを用いる。
 次のマクロを実行してみてください。
//------------------------------------------------------//
grepdialog;
menu "タグ全体を削除する",
    "ファイル名のみ削除する",
    "削除しない";
if(result == 1) replaceallfast "^[^:]+:","",regular;
else if(result == 2) replaceallfast "^[^(]+","",regular;
endmacro;
//------------------------------------------------------//

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

[ ]
RE:07388 grep検索結果で行の先頭のファNo.07390
きいろいまふらあ さん 01/02/03 11:33
 
まふです。補足。

>もし,ページ数は残すのでしたら,検索文字を
>^[^(]+

ファイル名に「(」が使われているとアレかも。
後方参照を使って

検索文字列:^[^:]+\f\([0-9]+\):
置換文字列:\1

とでもすればいいのかな?

ご参考まで。

[ ]
RE:07388 grep検索結果で行の先頭のファNo.07391
ひろ さん 01/02/03 12:02
 
 山紫水明さん今日は、ひろです。いつも揚げ足取りになってしまいますが、
> 検索文字:^[^:]+:
 これだとフルパスで出力している場合は駄目です。

 今回の toom さんの場合、消したいのだから、フルパスで出力していると
も思えませんが(^^)。

[ ]
RE:07391 grep検索結果で行の先頭のファNo.07396
山紫水明 さん 01/02/03 20:33
 
 ひろさん,こんばんは。

》いつも揚げ足取りになってしまいますが、

 どうもすぐ足を揚げてしまうもんで,いつも取られてしまいます。(^^;

》> 検索文字:^[^:]+:
》 これだとフルパスで出力している場合は駄目です。

 そうでした。
 ^[A-z]?:?[^:]+:
とすべきですね。

》 今回の toom さんの場合、消したいのだから、フルパスで出力していると
》も思えませんが(^^)。

 そうなんです。フルパスのオプションは考えもしなかった。<−−言い訳
でも,そういう場合も考慮すべことには違いありませんね。

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

[ ]
RE:07390 grep検索結果で行の先頭のファNo.07397
山紫水明 さん 01/02/03 20:33
 
 きいろいまふらあさん,こんばんは。

》ファイル名に「(」が使われているとアレかも。

 そうでした。アレでした。(^^;

》検索文字列:^[^:]+\f\([0-9]+\):
》置換文字列:\1

 こうすべきですね。それで,ひろさんのご指摘のように,限密を期せば,
 [A-z]?:?[^:]+\f\([0-9]+\):
となりますか。

 ということで, toom さん,それぞれ訂正します。

 マクロの方は結局,以下のようになります。
//------------------------------------------------------//
grepdialog;
menu "タグ全体を削除する",
    "ファイル名のみ削除する",
    "削除しない";
if(result == 1) replaceallfast "^[A-z]?:?[^:]+:","",regular;
else if(result == 2) replaceallfast "[A-z]?:?[^:]+\\f\([0-9]+\):",
"\\1",regular;
endmacro;
//------------------------------------------------------//

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

[ ]
RE:07387 grep検索結果で行の先頭のファイNo.07402
toom さん 01/02/04 02:44
 
TOOMです
みなさんありがとうございます。
早速マクロを使わせていただいたのですが、
実はgrepをかけるファイルがWEBのアクセスログでして
以下のようなフォーマットになっている為、他の必要な部分まで無くなってしまいま
す。

秀丸で正規表現の -h, --no-filename
[複数ファイルを検索した時に、出力の前にファイル名を付けることを抑制する]を使
ったgrep検索は可能でしょうか?
たびたびすいません。。

[ファイルの中身]
255.255.255.255 - - [25/Jan/2001:01:15:24 +0900] "GET / HTTP/1.0" 200 6274 "
-" "Mozilla/4.7 [ja] (Macintosh; I; PPC)"

[grep後]
access_log(11545): 255.255.255.255 - - [25/Jan/2001:01:15:24 +0900] "GET / H
TTP/1.0" 200 6274 "-" "Mozilla/4.7 [ja] (Macintosh; I; PPC)"

[マクロ実行後]
24 +0900] "GET / HTTP/1.0" 200 6274 "-" "Mozilla/4.7 [ja] (Macintosh; I; PPC)"



[ ]
RE:07402 grep検索結果で行の先頭のファNo.07403
山紫水明 さん 01/02/04 09:09
 
 toomさん,こんにちは。

》以下のようなフォーマットになっている為、他の必要な部分まで無くなってしま
》います。

 確かに無くなりますね。ちょっと不可解ですが,grep の正規表現の動作におか
しいところがあるような気がします。

》[複数ファイルを検索した時に、出力の前にファイル名を付けることを抑制す
》る]を使ったgrep検索は可能でしょうか?

 そういうオプションはないようですね。
 それで,当面の対策として,お手数ですが以下のマクロに置き換えてもう一度試
してみてください。

//------------------------------------------------------//
grepdialog;
menu "タグ全体を削除する",
    "ファイル名のみ削除する",
    "削除しない";
if(result == 1) replaceallfast "^[A-z]?:?[^:]+: ","",regular;
else if(result == 2) replaceallfast "[A-z]?:?[^:]+\\f\\([0-9]+\\): ",
"\\1",regular;
endmacro;
//------------------------------------------------------//

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

[ ]
RE:07403 grep検索結果で行の先頭のファNo.07404
山紫水明 さん 01/02/04 10:49
 
 追伸です。

》 ちょっと不可解ですが,grep の正規表現の動作におかしいところがあるよう
》な気がします。

 この部分,軽率な判断(いつものことですが(^^; )でしたので取り消します。
 やはり,マクロの方に問題がありました。

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

[ ]
RE:07403 grep検索結果で行の先頭のファNo.07413
ひろ さん 01/02/04 15:19
 
 toom さん、山紫水明さん今日は、ひろです。
 #7402
> 実はgrepをかけるファイルがWEBのアクセスログでして
 そもそもアクセスログならば、CUI の grep を使えば、toom さんお望み
のフォーマットで出力するものが多く有ります。

 マクロの件ですが、
//----------------------------------------------------------
grepdialog;
menu "タグ全体を削除する",
  "ファイル名のみ削除する",
  "削除しない";
if(result == 0 || result == 3)endmacro;
##result = result;
disabledraw;
gofileend;
if(##result == 1){
  while(1){
    replaceup "^[A-z]?:?[^:]+: ","",regular;
    if(!result)break;
  }
}
else if(##result == 2){
  while(1){
    replaceup "^[A-z]?:?[^:]+\\f\\([0-9]+\\): ","\\1",regular;
    if(!result)break;
  }
}
endmacro;
//------------------------------------------------------------
にすればよいと思います。

 先のマクロだと、同一行内でも条件にヒットすると削除されてしまうこと
を、私も忘れていました(^^)。

[ ]
RE:07387 grep検索結果で行の先頭のファイNo.07425
toom さん 01/02/04 23:38
 
TOOMです。
山紫水明さん ひろさん 
おかげさまで無事タグなしのgrep検索できました。
ありがとうございました。

[ ]