著作一覧 |
テキストファイルの区切りに----とか入れていて、それがえらく大きなサイズになったとする。というか、なった。
で、どれだけのフラグメントがあるのか、----の数を調べようと、
grep ---- foobar.txt
とやると「そんなオプションは知らん」とgrepが文句を垂れる。
ああ、そうか、と納得して、
grep '----' foobar.txt
とやっても「そんなオプションは知らん」とgrepが文句を垂れる。
むむと、
grep "----" foobar.txt
とやっても「そんなオプションは知らん」とgrepが文句を垂れる。
まあ、""はだめだろうとは思ったが、それではと
grep \-\-\-\- foobar.txt
とやっても「そんなオプションは知らん」とgrepが文句を垂れる。
途方に暮れた。
で、なんとなく
grep '\-\-\-\-' foobar.txt
とやったら、処理してくれた。
さて、どこからどこまでがbashの仕業でどこからどこまでがgrepの考慮なんだろうか。
たぶん、''の中身をそのまま送るのはbash。したがって、\-\-\-\-はbashがエスケープを処理するので、grepには----が与えられて、そんなオプションは……となる。しかし'\-\-\-\-'ではbashはそのままgrepに送り、grepは-で始まっていないので検索文字列としてエスケープ処理して、無事動いた、のだと思う。
ジェズイットを見習え |
grep -e ---- foo.txt または grep -- ---- foo.txt が正解。<br>-e は次に来る引数を検索パターンとせよというオプション、 -- はそれ以降フラグは来ないと宣言するオプションです。
なるほど。どうもありがとうございます。