Linux 正規表現を使ってテキストファイルを検索
[Linux][Linux コマンド][正規表現]
- ファイルグロブでは、*などコマンドラインで特別な意味を持つ特殊文字を使用する
- bashが認識するワイルドカード文字はほんの数個だが、比較的単純なファイル名のグロビングには十分
- 単純でないグロビングが必要になる場合、ファイルグロブの考え方を汎用のテキストストリームに応用することで広範な機能が利用できるようになる
- そのためには、正規表現を利用する
grep
grep [options] regex [file]
- fileで指定したファイルまたは標準入力から、regexでしてした正規表現に一致する行を検索する
頻用オプション
オプション | 内容 |
---|---|
-c | 一致した行の数だけを表示 |
-h | 一致した行を表示するが、複数ファイルを指定した場合、付加されるファイル名を表示しない |
-i | 大文字小文字を区別しない |
-n | 一致行に行番号を付与 |
-v | regexで指定した正規表現に一致しない行をすべて出力 |
シェルによる展開の問題を咲けるため、コマンドラインでは正規表現を引用符で囲むようにする
sed
sed [options] 'command1' [file] sed [options] -e 'command1' [-e 'command2'] [file] sed [options] -f script [file]
- command1は単一引用符で囲むことに注意する(シェルによる評価と展開を抑制のため)
- sedコマンドのアドレス部分にはスラッシュで囲んだ正規表現を含めることができる
- 例
- file1で指定したファイルの内容の空行を除きすべて表示する
$ sed '/^$/ d' file1
YAGI Hiroto (piroto@a-net.email.ne.jp)
twitter http://twitter.com/pppiroto
Copyright© 矢木 浩人 All Rights Reserved.