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.

greple #7 複数キーワード検索 単独オプション

Last updated at Posted at 2021-12-06

複数キーワード検索 単独オプション

これまで --le オプションを使って、複数のキーワードを指定する方法について紹介してきました。キーワードの前に記号を付けることで AND, OR, NOT, MUST の意味を持たせることができました。

単独オプション

実は --le オプションで扱うそれぞれのキーワードは、個別の単独オプションで指定することもできます。一覧にすると、こうです。

記号 意味 単独オプション
なし AND or OPTIONAL -e, --and
- NOT -v, --not
? OR --or
+ MUST -r, --must

このため、以下のコマンドは、どれも同じ意味になります。

greple 'まぐろ ?はまち ?えび -いくら' sushi.txt 
greple 'まぐろ はまち|えび -いくら' sushi.txt 
greple -e まぐろ --or はまち --or えび -v いくら sushi.txt 
greple -e まぐろ -e 'はまち|えび' -v いくら sushi.txt 

機能的に違いはないので、どれでも使いやすい方法で指定すればいいと思います。--or オプションに関しては、単独オプションで指定したものがグループ化されます。

絞り込み検索

単独オプションが便利なのは、次々にオプションを追加して、選択肢を絞り込んでいくような場合です。シェルのヒストリー機能を使って直前のコマンドを呼び出して、そのまま最後に追加していくことができます。

特に -v オプションは検索ワードを指定するオプションとしては解釈されないので、裸の(オプション指定なしの)検索ワードがあっても、最後に追加するだけで検索結果を絞り込むことが可能です。オプション引数とそれ以外の引数は、このように混在させることができます。

greple -n まぐろ sushi.txt
greple -n まぐろ sushi.txt -v いくら
greple -n まぐろ sushi.txt -v いくら -v いか
greple -n まぐろ sushi.txt -v いくら -v いか -v サーモン

実行してみるとこのような結果になります。

image.png

ちょうど、パイプで grep -v コマンドをつないでいくのと同じ要領で絞り込んでいくことができます。

毎回まぐろの色が変わってしまっているのは実装上の都合です。この結果を見て、修正した方がいいのではないかと感じていますが、この場合むしろ見やすくなっていいですね。そのうち直します。

-v オプションにも正規表現を使えるので、最後のコマンドは次のように書いても同じです。

greple -n まぐろ sushi.txt -v 'いくら|うに|たまご'

まとめ

複数キーワードの AND, OR, NOT, MUST 指定を単独のオプションで行う方法について紹介しました。--le オプションとどちらが適しているかは、好みや状況によって変わってくると思います。

grep 系のコマンドを使う状況では、最初に出た結果が多すぎて、どうやって絞り込んでいくか試行錯誤するようなことがよくあります。この場合、上で紹介した -v オプションの使い方は有効です。

オプションを最後にまとめて、次のように使うやり方もいいかもしれません。この場合は、パターンが最初の引数ではないのでオプション指定が必要です。--le の代わりに -x を使うこともできます。

greple sushi.txt -x 'まぐろ -いくら -いか -サーモン'

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?