mg の新機能
変更したのはもう去年のことだが、今使っている mg には、これまでとまったく違う検索機能が追加されている。
mg に限らず grep 系のコマンドでは、検索エンジンのような指定がしにくい。たとえば foo と bar の両方が含まれている行を検索しようとすると案外面倒なのである。普通はパイプを使ってこんな風にするのだろうか。
% grep foo file | grep bar
mg で1回でこれを実行するとすれば、
% mg -e 'foo.*bar|bar.*foo'という具合か。でも、文字列の数が増えてくるとパターンが極めて複雑になってしまう。
先読みを使うとこんな風にも書ける。
% mg -e '(?=.*foo)(?=.*bar)'これはこれで、なかなかご機嫌な使い方だ。 さらに buz を含まない行を探したければこう書けばいい。
% mg -e '(?=.*foo)(?=.*bar)(?!.*buz)'
しかし、bar と foo を含んで bar を含まないパラグラフを探したいとかいうと、なかなか面倒なのだ。 というわけで、それをもっと簡単に指定できる機能を実現してみたのである。 最初は必要があって追加した機能だが、その後なかなか使う機会がなくて、リリースに至らずにいる。
























最近のコメント