🔦

grep便利

2023/11/08に公開

grepコマンド

https://tech-blog.rakus.co.jp/entry/20220912/grep

上記の記事に書いてあるようにgrepは対象から指定した文字列が含まれる行を表示してくれるコマンド。普段そんなに使ってなかったが便利な使い方ができることを知ったので今後積極的に使っていきたいと思っている。

該当行前後を表示する

全然オプションを深堀ってなかったので知らなかったが、該当行の前後も表示することができるらしい!嬉しい。

  • -line_num: 該当行の前後を与えた数字分出力
  • -A line_num: 該当行のより下を与えた数字分出力
  • -B line_num: 該当行のより上を与えた数字分出力
# 該当行と前後3行表示
$ grep -3 hoge hoge.txt

# 該当行とその下を3行表示(上も同様)
$ grep -A 3 hoge hoge.txt

https://atmarkit.itmedia.co.jp/flinux/rensai/linuxtips/137greplineplus.html

便利な設定で罠にハマらないために

あと--colorオプションで該当箇所の色を変えることができて便利。また、指定しなくても常に有効にしたい設定がある場合は環境変数を定義しておくと良い。zshを使ってるので.zshrcに追記して、sourceで反映。

export GREP_OPTIONS="--color=auto"

https://www.na3.jp/entry/20120129/p1

で、この便利な色つけるオプションはnever(色つけない)、auto標準出力がターミナルに繋がってる時に色をつける)、always常に色つける)の3つ指定できる。alwaysを指定してる記事とかも見つかるが、特に理由がなければautoを選択しておくべき。理由は、もし標準出力先がファイルだったりパイプしてるコマンドだったりすると、該当箇所に色をつけるためのエスケープコードが混入してしまい想定外の挙動となる可能性があるから。詳しくはリンクを参考に。
https://qiita.com/soshiM/items/456b89ad968c068cbb90
https://stackoverflow.com/questions/24093365/different-results-in-grep-results-when-using-color-always-option

Discussion