[JM:01294] Re: grepのGREP_OPTIONS

Back to archive index

Masakazu Takahashi emasa****@gmail*****
2017年 3月 7日 (火) 22:28:24 JST


高橋(emasaka)です。

2017-03-06 21:33 GMT+09:00 長南洋一 <cyoic****@maple*****>:
> 長南です。
>
> 三つめです。原文がわかりにくいので、話がくどくなっています。
>
> ○ --exclude=GLOB
>
>      Skip  any  command-line file with a name suffix that matches the
>      pattern GLOB, using wildcard matching; a name suffix  is  either
>      the  whole  name,  or any suffix starting after a / and before a
>      +non-/.  When searching recursively, skip any subfile whose base
>      name  matches  GLOB; the base name is the part after the last /.
>      A pattern can use *, ?, and [...]  as wildcards, and \ to  quote
>      a wildcard or backslash character literally.
>
>      コマンドラインのファイルのうち、 名前の接尾辞がパターン GLOB  に
>      ワイルドカードでマッチするものをスキップします    名前の接尾辞と
>      は、名前全体か、 / の後で / 以外が続く接尾辞です。  ディレクトリ
>      を再帰的に検索するときは、  ベースネームが GLOB にマッチするすべ
>      てのファイルをスキップします。 ベースネームとは最後の / より後の
>      部分です。  パターンには、 *, ?, [...]  がワイルドカードとして使
>      えます。 \ を文字の前に置けば、 ワイルドカード文字やバックスラッ
>      シュ文字を本来の意味で使用できます
>
>    これは原文がよくわかりません。まず、"name suffix" が何だかわからない。
>    さらに "any suffix starting after a / and before a +non-/" も
>    よくわからない。info grep をやると、"+non-/" のところが "non-'/'"
>    となっていますから、"+" はタイプミスなのでしょうが、「/ の後ろ、
>    かつ / 以外の文字の前から始まる suffix (あるいは、/ の後ろから始まり、
>    / 以外の文字の前にある suffix)」なんて、空文字列になってしまうでしょう。
>
>    そこで、実際に動かしてみました。
>    以下の haiku.tex は手元にある tex ファイルで、同じディレクトリには
>    tanka.tex, kouta.tex などもあります。短歌や俳句ですから、どの
>    ファイルも「月」という単語を含んでいます。
>
>      $ grep --exclude="text/tex/haiku.tex" "月" text/tex/*.tex
>      $ grep --exclude="tex/haiku.tex" "月" text/tex/*.tex
>      $ grep --exclude="tex/haiku.tex" "月" /home/myhome/text/tex/*.tex
>      $ grep --exclude="/home/myhome/text/tex/haiku.tex" "月" \
>      /home/myhome/text/tex/*.tex
>      $ grep --exclude="haiku.tex" "月" text/tex/*.tex
>      $ grep --exclude="hai*.tex" "月" text/tex/*.tex
>
>    どれも期待通り haiku.tex が除外されます。
>    でも、以下のようなのはダメ。haiku.tex が除外されません。
>
>      $ grep --exclude="/home/myhome/text/tex/haiku.tex" "月" text/tex/*.tex
>      $ grep --exclude="./text/tex/haiku.tex" "月" text/tex/*.tex
>
>    また、こういうのもダメです。拡張子 tex のファイルが除外されません。
>
>      $ grep --exclude="tex" "月" text/tex/*
>      $ grep --exclude=".tex" "月" text/tex/*
>      $ grep --exclude="/*.tex" "月" text/tex/*
>
>    つまり、"text/tex/haiku.tex" というファイル名について言うと、
>    "text/tex/haiku.tex", "tex/haiku.tex", "haiku.tex" はみんな
>    "name suffix" だということになります。
>
>    ここで言う "name suffix" は、いわゆる接尾辞や拡張子ではなく、ファイル名の
>    後ろの部分ということではないでしょうか。「末尾」では言いすぎでしょう。
>    「後ろの部分、後方部分、後尾、後尾部分、後尾部、尾部」あたりか。
>    小学館ランダムハウス英和辞典の suffix の項に「2 末尾に添えたもの、
>    追加(添加)物」という訳がありますから、そういう使い方もなくはなさそうです。
>
>    そう考えると、"a name suffix  is  either the whole name, or
>    any suffix starting after a / and before a non-/." も
>    「/ の後ろから始まり、/ 以外の文字で終わるファイルの後方部分」と
>    解釈できそうです。つまり、普通 "before somethng" と言えば、somethig を
>    含まないと思いますが、ここでは somethig を含んでいる。英語で before を
>    こういう風に使うことがよくあるのかどうかわかりませんし、もっとすっきりした
>    解釈もあるかもしれませんけれど。
>
>    とりあえず、「尾部」を使って、試訳をしてみます。
>
>      コマンドラインで指定されているファイルのうち、その名前の尾部が、
>      ワイルドカードによるマッチングでパターン GLOB にマッチするファイルを
>      スキップします。ここで言う「名前の尾部」とは、ファイル名の全体、
>      または、/ の後ろから始まり、/ 以外の文字で終わるファイル名の最後の部分の
>      ことです。また、ディレクトリを再帰的に検索しているときには、ベースネームが
>      GLOB にマッチするファイルをスキップします。...
>
>    「... 最後の部分のことです」の後ろに、「(訳注: たとえば、ファイル名が
>    text/tex/aaa.tex なら、「名前の尾部」は、text/tex/aaa.tex,
>    tex/aaa.tex, aaa.tex です)」といった注を付けた方が、読者に親切かも
>    しれません。
>
>    検索対象のファイルがコマンドラインで指定されたものの場合と、再帰検索中に
>    出会うものの場合で、パターン GLOB とのマッチングの振る舞いが違うわけで、
>    ここではその違いが対比されているのですから、そうした文章の構造を前に
>    出すなら、次のような訳も考えられます。
>
>      コマンドラインで指定されているファイルについては、その名前の尾部が、
>      ワイルドカードによるマッチングでパターン GLOB にマッチするファイルを
>      スキップします。ここで言う「名前の尾部」とは、ファイル名の全体か、
>      / の直後に始まり / 以外の文字で終るファイル名の最後の部分のことです。
>      また、ディレクトリを再帰検索しているときに出会うファイルについては、
>      ベースネームが GLOB にマッチするファイルをスキップします。...
>
>    なお、"using wildcard matching" は、正規表現ではなく、シェルの
>    ワイルドカードによるマッチングだと言っているのでしょうから、「ワイルド
>    カードマッチングで」や「ワイルドカードを使う (ワイルドカード式の)
>    マッチングで」といった訳もあると思います。

いただいた案で変更しました。


> ○ --exclude-dir=GLOB
>
>      Skip  any command-line directory with a name suffix that matches
>      the  pattern  GLOB.   When  searching  recursively,   skip   any
>      subdirectory whose base name matches GLOB.  Ignore any redundant
>      trailing slashes in GLOB.
>
>      コマンドラインのディレクトリのうち、 名前の接尾辞がパターン GLOB
>      にワイルドカードでマッチするものをスキップします  ディレクトリを
>      再帰的に検索するときは、 名前が GLOB  にマッチするすべてのディレ
>      クトリをスキップします。 GLOB 末尾の余分なスラッシュは無視されます。
>
>    これも --exclude=GLOB と同様です。"using wildcard matching" は
>    原文にありませんが、補足してもよいと思います。
>
>      $ grep -r --exclude-dir="text/tex2" "月" text/*
>      $ grep -r --exclude-dir="tex2" "月" text/*
>
>    どちらでも text/tex2 ディレクトリが除外されます。
>
>      $ grep -r --exclude-dir="tex2" "月" text
>
>    この再帰検索でも、text/tex2 が除外されます。。
>
>      $ grep -r --exclude-dir="text/tex2" "月" text
>
>    これはうまく除外されません。再帰検索が行われるわけですが、text/tex2 は
>    ベースネームではありませんから。訳案を付けておきます。
>
>      コマンドラインで指定されているディレクトリのうち、その名前の尾部が
>      パターン GLOB にマッチするディレクトリをスキップします。また、
>      ディレクトリを再帰的に検索しているときには、ベースネームが GLOB に
>      マッチするサブディレクトリをスキップします。...
>
>    対比を前に出す訳し方なら、
>
>      コマンドラインで指定されているディレクトリについては、その名前の
>      尾部がパターン GLOB にマッチするディレクトリをスキップします。また、
>      ディレクトリを再帰検索しているときに出会うディレクトリについては、
>      ベースネームが GLOB にマッチするサブディレクトリをスキップします。...

最初の案を元に、以下のように変更しました。

    コマンドラインで指定されているディレクトリのうち、名前の尾部がパター
    ン GLOB にマッチするディレクトリをスキップします。また、ディレクト
    リを再帰的に検索しているときには、ベースネームが GLOB にマッチする
    サブディレクトリをスキップします。

元案からの変更点は以下のとおりです。

・「その名前」が前方参照なのが気になったので「名前」としました


以上の変更の結果について、前回提出したのと同じバージョンの差分ファイルと
全文ファイルを添付します。

差分は、前回からの差分ではなく、前回と同様に 2.6 から順番の差分
(前回の差分ファイルの置きかえ)です。


> --
> 長南洋一
>
> _______________________________________________
> linuxjm-discuss mailing list
> linux****@lists*****
> http://lists.osdn.me/mailman/listinfo/linuxjm-discuss

-- 
Masakazu Takahashi (emasaka)
-------------- next part --------------
$B%F%-%9%H7A<00J30$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...
$B%U%!%$%kL>(B: 2.6-2.20_0307.patch
$B7?(B:         text/x-patch
$B%5%$%:(B:     11859 $B%P%$%H(B
$B @ bL@(B:       $BL5$7(B
Download 
-------------- next part --------------
$B%F%-%9%H7A<00J30$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...
$B%U%!%$%kL>(B: 2.20-2.21_0307.patch
$B7?(B:         text/x-patch
$B%5%$%:(B:     26505 $B%P%$%H(B
$B @ bL@(B:       $BL5$7(B
URL:        http://lists.osdn.me/mailman/archives/linuxjm-discuss/attachments/20170307/89a61e90/attachment-0006.bin 
-------------- next part --------------
$B%F%-%9%H7A<00J30$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...
$B%U%!%$%kL>(B: 2.21-2.25_0307.patch
$B7?(B:         text/x-patch
$B%5%$%:(B:     10578 $B%P%$%H(B
$B @ bL@(B:       $BL5$7(B
URL:        http://lists.osdn.me/mailman/archives/linuxjm-discuss/attachments/20170307/89a61e90/attachment-0007.bin 
-------------- next part --------------
$B%F%-%9%H7A<00J30$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...
$B%U%!%$%kL>(B: 2.25-2.27_0307.patch
$B7?(B:         text/x-patch
$B%5%$%:(B:     16732 $B%P%$%H(B
$B @ bL@(B:       $BL5$7(B
URL:        http://lists.osdn.me/mailman/archives/linuxjm-discuss/attachments/20170307/89a61e90/attachment-0008.bin 
-------------- next part --------------
$B%F%-%9%H7A<00J30$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...
$B%U%!%$%kL>(B: 2.27-3.0_0307.patch
$B7?(B:         text/x-patch
$B%5%$%:(B:     1106 $B%P%$%H(B
$B @ bL@(B:       $BL5$7(B
URL:        http://lists.osdn.me/mailman/archives/linuxjm-discuss/attachments/20170307/89a61e90/attachment-0009.bin 
-------------- next part --------------
$B%F%-%9%H7A<00J30$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...
$B%U%!%$%kL>(B: grep.1-2.0-ja_0307
$B7?(B:         application/octet-stream
$B%5%$%:(B:     78527 $B%P%$%H(B
$B @ bL@(B:       $BL5$7(B
URL:        http://lists.osdn.me/mailman/archives/linuxjm-discuss/attachments/20170307/89a61e90/attachment-0005.obj 
-------------- next part --------------
$B%F%-%9%H7A<00J30$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...
$B%U%!%$%kL>(B: grep.1-2.20-ja_0307
$B7?(B:         application/octet-stream
$B%5%$%:(B:     79060 $B%P%$%H(B
$B @ bL@(B:       $BL5$7(B
URL:        http://lists.osdn.me/mailman/archives/linuxjm-discuss/attachments/20170307/89a61e90/attachment-0006.obj 
-------------- next part --------------
$B%F%-%9%H7A<00J30$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...
$B%U%!%$%kL>(B: grep.1-2.21-ja_0307
$B7?(B:         application/octet-stream
$B%5%$%:(B:     72058 $B%P%$%H(B
$B @ bL@(B:       $BL5$7(B
URL:        http://lists.osdn.me/mailman/archives/linuxjm-discuss/attachments/20170307/89a61e90/attachment-0007.obj 
-------------- next part --------------
$B%F%-%9%H7A<00J30$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...
$B%U%!%$%kL>(B: grep.1-2.25-ja_0307
$B7?(B:         application/octet-stream
$B%5%$%:(B:     73687 $B%P%$%H(B
$B @ bL@(B:       $BL5$7(B
URL:        http://lists.osdn.me/mailman/archives/linuxjm-discuss/attachments/20170307/89a61e90/attachment-0008.obj 
-------------- next part --------------
$B%F%-%9%H7A<00J30$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...
$B%U%!%$%kL>(B: grep.1-2.27-ja_0307
$B7?(B:         application/octet-stream
$B%5%$%:(B:     78424 $B%P%$%H(B
$B @ bL@(B:       $BL5$7(B
URL:        http://lists.osdn.me/mailman/archives/linuxjm-discuss/attachments/20170307/89a61e90/attachment-0009.obj 



linuxjm-discuss メーリングリストの案内
Back to archive index