SSブログ

grep でパターンをファイルから読み込むには? [NT]

grep で正規表現にマッチした部分だけ抽出するには? で grep について書いたので、その続き。

複数のパターンで grep を実行したい場合、スクリプトを書かなくても -f オプションを用いればよい。これを使うと、パターンをファイルから読むことが出来る。

pattern.txt というファイルを次のように記述する。

CLOSE_WAIT
LI.*G

検索対象のファイル list.txt が次の内容であるとする。

Active Connections

Proto Local Address Foreign Address State
TCP 127.0.0.1:4111 127.0.0.1:4112 ESTABLISHED
TCP 127.0.0.1:4112 127.0.0.1:4111 ESTABLISHED
TCP 127.0.0.1:4114 127.0.0.1:4115 ESTABLISHED
TCP 127.0.0.1:4115 127.0.0.1:4114 ESTABLISHED
TCP 127.0.0.1:5152 0.0.0.0:0 LISTENING
TCP 127.0.0.1:5152 127.0.0.1:4113 CLOSE_WAIT
TCP 127.0.0.1:9089 0.0.0.0:0 LISTENING
TCP 127.0.0.1:10110 0.0.0.0:0 LISTENING

このとき、

grep -f pattern.txt hoge.txt
と実行すると、

 

  TCP    127.0.0.1:5152         0.0.0.0:0              LISTENING
  TCP    127.0.0.1:5152         127.0.0.1:4113         CLOSE_WAIT
  TCP    127.0.0.1:9089         0.0.0.0:0              LISTENING
  TCP    127.0.0.1:10110        0.0.0.0:0              LISTENING

を得られる。

尚、-F を指定しなければパターンファイルの各行は正規表現として扱われる。そのため、LI*G が LISTENING に該当するので、CLOSE_WAIT だけでなく、LISTENING の行も表示されている。


タグ:grep linux SHELL

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。