0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

App::Greple チュートリアルAdvent Calendar 2021

Day 9

greple #9 検索範囲指定 --include/--exclude

Last updated at Posted at 2021-12-08

検索範囲指定 --include/--exclude

これはgrepleチュートリアルの9日目です。前回--inside--outside オプションを使って、検索する対象の範囲を指定する方法について紹介しました。今回は、その続きで --include--exclude オプションについて紹介します。

例外条件を指定したい

--inside--outside は、全体の中から、どこを検索対象にするかという観点で使いました。それに対して --include--exclude は、どこを検索対象から外すかという観点で使います。

--outside オプションを使って、寿司ネタ領域からまぐろを検索しています。

image.png

でも、まぐろは好物だけど、ヅケはあまり好きではなくて、ネギも勘弁して欲しいなあということで、漬けまぐろねぎまぐろを除外したいと思いました。

この場合 --exclude オプションに除外したい文字列を与えることで、それに対するマッチを抑制することができます。

greple -n --outside '^\S+' まぐろ sushi.txt --exclude 漬けまぐろ --exclude ねぎまぐろ

image.png

ヅケとネギはハイライトされなくなりました。でも、選択肢は変わりませんでした。

文字列には正規表現を使用することができるので --exclude '(漬け|ねぎ)まぐろ' と書くこともできます。加えて、お子様セットも年齢制限があるので除外しましょう。この場合は単なる文字列ではなく、「お子様セット」ではじまる行全体を指定したいので ^お子様セット.* と指定します。

greple -n --outside '^\S+' まぐろ sushi.txt --exclude '(漬け|ねぎ)まぐろ' --exclude '^お子様セット.*'

image.png

お子様セットは候補に出てこなくなりました。

--inside/--outside と --include/--exclude の使い分け

流れとしては --inside/--outside で検索対象範囲を拾い出して、--include/--exclude で絞り込むという使い方になります。

上の例で、--exclude の代わりに --outside を使うことはできません。前回書いたように --inside--outside で指定した範囲は和集合として扱われるので、結果として全体に戻ってしまいます。

この例では、--outside を一度しか使っていないので、そこを --exclude にしても結果は変わりません。単独で使う場合は、どちらを使っても同じ結果になります。

まとめ

前回の --inside/outside に加えて --include/exclude オプションについて紹介しました。

TeX や roff など、マークアップを使った文書ファイルを校正しようとする場合、マークアップ命令やコメント部分は対象から外して、純粋に文章の部分だけを処理する必要があります。

また、原稿の中には自分で書いた文章以外に、引用文であったり、別の文書や書籍のタイトル、固有名詞など、ローカルなルールを適用すべきではない部分もあります。それらを例外として処理対象から外すことができないと実用的なツールとはなりません。greple の機能は、そのような経験から進化してきました。

greple のオプションは、なるべく grep に合わせるようにしているのですが、--include--excude については、まったく違う意味になるので注意してください。

SEE ALSO

  1. https://qiita.com/kaz-utashiro/items/5b6bcbe54891b3bd9db5
  2. https://qiita.com/kaz-utashiro/items/eb8c7067e6de34842fe3
  3. https://qiita.com/kaz-utashiro/items/165e744d4250adedc4c1
  4. https://qiita.com/kaz-utashiro/items/439e6abcecf36c520703
  5. https://qiita.com/kaz-utashiro/items/24ac0b8fdd30b598e069
  6. https://qiita.com/kaz-utashiro/items/a1ba4e3d07cf37dc25e3
  7. https://qiita.com/kaz-utashiro/items/0c8c944c17a72724b771
  8. https://qiita.com/kaz-utashiro/items/8783c2fd0cc4315b9a3d
  9. https://qiita.com/kaz-utashiro/items/84f5a6be6bf996076c64 ←イマココ
  10. https://qiita.com/kaz-utashiro/items/ebc7ea99f800cfc8c90c
  11. https://qiita.com/kaz-utashiro/items/25a14e75380c39b5e0af
  12. https://qiita.com/kaz-utashiro/items/ebbeb8a5538a15ff04fc
  13. https://qiita.com/kaz-utashiro/items/b265deef9c9b1953a414
  14. https://qiita.com/kaz-utashiro/items/2b20e0226cffde213ce0
  15. https://qiita.com/kaz-utashiro/items/16b5142ef7a89aa35380
  16. https://qiita.com/kaz-utashiro/items/d19fe5ee859f31ce172c
  17. https://qiita.com/kaz-utashiro/items/09a5f5cf08ce314e2add
  18. https://qiita.com/kaz-utashiro/items/6e4b1f51455e587ef743
  19. https://qiita.com/kaz-utashiro/items/010f141f17e855aab4fc
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?