2019年2月17日日曜日

【LinuC】grepコマンド 正規表現

grepコマンドは、検索範囲から文字列を検索するコマンドです。

通常の検索
$grep aaa bbb.txt
⇒bbb.txt の中から「aaa」という文字列が入っている行を検索する。

正規表現を使った検索
$grep '^a' bbb.txt
⇒bbb.txt の中から先頭の文字が「a」から始まる行を検索する。

他にも以下のようなメタキャラクタもあり使用することができます。

.             任意の文字に一致
^    行の先頭
$    行の末尾
*    直前の文字が0回以上の繰り返しに一致
?    直前の文字が0回もしくは1回の繰り返しに一致(拡張正規表現)
+    直前の文字が1回以上の繰り返しに一致(拡張正規表現)
[abAB]  a,b,A,Bいずれかの文字
[^abAB] a,b,A,B以外のいずれかの文字
[a-dA-D] a,b,c,d,A,B,C,Dいずれかの文字
\x            メタキャラクタを文字列として扱う(xがメタキャラクタの時)

※拡張正規表現を使う場合はgrepに-Eのオプションが必要。

■使用例
$grep '.' file.txt
⇒空白行以外をすべて表示する。

$grep '\.' file.txt
⇒ピリオドを含むすべての行を表示する。

$grep '[Ll]inux' file.txt
⇒Linix,linuxのいずれかを含む行をすべて表示する。

$grep '^[^0-9]' file.txt
⇒先頭の1文字が数値以外の行をすべて表示する。

$grep '^[^#]' file.txt
⇒先頭の一文字が#以外で始まるコメント行以外の行をすべて表示する。

$grep '.a[^b].' file.txt
⇒2文字目と5文字目がa。3文字目がb以外の行を表示する。

$grep ^# file.txt | wc -l
⇒戦闘が#で始まる行数を数える。

正規表現を使わずに検索を行う場合はfgrepやFオプションを使って検索します

$fgrep '^apple' sample.txt
⇒^appleの文字列をsample.txtから検索する。

$grep -F '^apple' sample.txt
⇒^appleの文字列をsample.txtから検索する。




  

0 件のコメント:

コメントを投稿