grepコマンドの-Aオプションと-Bオプションと、時々、-Cオプション

最近知ったgrepコマンドの-Aオプションと-Bオプションと、時々、-Cオプションについてメモっておく。

例えば設定ファイルを見てHDFSのブロックサイズを知りたいとします。

hdfs-site.xmlをdfs.block.sizeでgrepすると下記のようになります。

$ grep dfs.block.size hdfs-site.xml
  <name>dfs.block.size</name>

や、知りたいのはその1行後なんだけど、、、って時は、-Aオプションを使います。うむデフォルトの64MBですね。

$ grep -A 1 dfs.block.size hdfs-site.xml
  <name>dfs.block.size</name>
  <value>67108864</value>

検索対象の後の行を知りたい場合はafterということで-A、前の行を知りたい場合はbeforeということで-Bオプションを使います。こんな感じ。

$ grep -A 3 -B 1 dfs.block.size hdfs-site.xml
<property>
  <name>dfs.block.size</name>
  <value>67108864</value>
  <description>The default block size for new files.</description>
</property>

また-Aと-Bに同じ数を指定する場合は-Cも使えます。こんな感じ。-A 3 -B 3と同じ意味になります。

$ grep -C 3  dfs.block.size hdfs-site.xml
</property>

<property>
  <name>dfs.block.size</name>
  <value>67108864</value>
  <description>The default block size for new files.</description>
</property>