ファイルの中からデータを検索する(grep)

スポンサーリンク

環境

CentOS7.6(64bit)

概要

ファイルの中からデータを検索します。

書式

grep [オプション] [パターン] ファイル名

オプション

-i
大文字を小文字を区別しません。

-n
出力行頭に入力ファイルでの行番号を表示します。

-v
検索に引っかからなかった行を出力します。

-R -r
ディレクトリ配下のファイルとサブディレクトリも対象にします。

サンプル

例1

大文字と小文字を区別せず指定した文字列を含んだ行を抜き出します。
$ grep -i error /var/log/messages

# grep -i error /var/log/messages
May  1 23:08:49 a3 kernel: BERT: Boot Error Record Table support is disabled. Enable it by using bert_enable as kernel parameter.
例2

カレントディレクトリで指定した文字列を含んだファイルを検索します。
$ grep error ./*

# grep error ./*
grep: ./anaconda: ディレクトリです
grep: ./audit: ディレクトリです
grep: ./chrony: ディレクトリです
grep: ./rhsm: ディレクトリです
grep: ./tuned: ディレクトリです
./vmware-network.6.log:++ local script=error
./vmware-network.6.log:+ '[' /etc/rc.d/init.d/network '!=' error ']'
./vmware-network.9.log:++ local script=error
./vmware-network.9.log:+ '[' /etc/rc.d/init.d/network '!=' error ']'
例3

コメントと空行以外を抜き出します。
ここではリポジトリファイルを選択しています。
$ cat /etc/yum.repos.d/CentOS-Base.repo | grep -vE "^#|^$"

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
・・・

コメントと空行以外を確認します。設定ファイルなどではコメントに「#」が多く利用されています。