「grep」コマンドはテキストファイル内の文字列を検索する際に使用します。
目次
「grep」コマンドの使い方(Linux)
以下のように「kyushu.txt」というファイルがあります。
$ cat kyushu.txt fukuoka saga nagasaki oita kumamoto miyazaki kagosima
上記ファイル内のデータから「miyazaki」という文字列を検索します。
$ grep miyazaki kyushu.txt miyazaki
「grep」コマンドは上記のように、ファイル内から該当する文字列を検索し表示します。
大きなデータのファイルの中身で検索したい文字列がある場合に調べるときに便利なコマンドです。
業務でもよく利用されるコマンドとなります。
「grep」コマンドでファイル内の該当文字列がある行番号を表示
ファイル内の該当の文字列が、どの行にあるか行番号で表示します。
$ grep -n kumamoto kyushu.txt 5:kumamoto
正規表現で検索する方法
以下では「sa」という文字列を含むデータを表示しています。
$ grep sa kyushu.txt saga nagasaki
ここで、正規表現「^」を用いて行頭に「sa」を含むデータを表示させます。
行頭に「sa」が含まれるのは「saga」ということで表示されます。
$ grep ^sa kyushu.txt saga
「|」パイプを使用した表示例
以下では「|」パイプを用いた「grep」コマンドの使用例となります。
表示は上記のコマンドと同じです。
$ cat kyushu.txt | grep sa saga nagasaki
実行コマンドでも以下のように「grep」コマンドを使用することができます。
$ ls -lF | grep kyushu -rw-r--r-- 1 root root 54 9月 20 07:09 kyushu.txt
「grep」コマンドオプション
「grep」コマンドのオプションは以下の通りとなります。
$ grep --help 使用法: grep [OPTION]... PATTERN [FILE]... 各 FILE 内で PATTERN を検索します。 例: grep -i 'hello world' menu.h main.c パターンの選択および解釈: -E, --extended-regexp PATTERN を拡張正規表現とする -F, --fixed-strings PATTERN を改行で区切られた文字列の組とする -G, --basic-regexp PATTERN を基本正規表現とする(デフォルト) -P, --perl-regexp PATTERN を Perl 正規表現とする -e, --regexp=PATTERN 一致処理に PATTERN を使用する -f, --file=FILE FILE から PATTERN を取得する -i, --ignore-case 大文字と小文字を区別しない -w, --word-regexp 強制的に単語全体で PATTERN の一致処理を行う -x, --line-regexp 強制的に行全体で PATTERN の一致処理を行う -z, --null-data データの行末を改行ではなく NULL とする その他: -s, --no-messages エラーメッセージを抑止する -v, --invert-match 一致しない行を選択する -V, --version バージョン情報を表示して終了する --help このヘルプを表示して終了する 出力の制御: -m, --max-count=NUM NUM 行一致後に中断する -b, --byte-offset 出力行と併せてバイトオフセットを表示する -n, --line-number 出力行と併せて行番号を表示する --line-buffered 行ごとに出力を flush する -H, --with-filename 出力行と併せてファイル名を表示する -h, --no-filename 出力の先頭にファイル名を付けない --label=LABEL 標準入力のファイル名の接頭辞として LABEL を使用する -o, --only-matching 行の中で PATTERN に一致した部分のみ表示する -q, --quiet, --silent 通常出力を全て抑止する --binary-files=TYPE バイナリファイルの形式を TYPE と仮定する TYPE は 'binary'、'text' または 'without-match' -a, --text --binary-files=text と等価 -I equivalent to --binary-files=without-match -d, --directories=ACTION how to handle directories; ACTION is 'read', 'recurse', or 'skip' -D, --devices=ACTION how to handle devices, FIFOs and sockets; ACTION is 'read' or 'skip' -r, --recursive like --directories=recurse -R, --dereference-recursive likewise, but follow all symlinks --include=FILE_PATTERN search only files that match FILE_PATTERN --exclude=FILE_PATTERN skip files and directories matching FILE_PATTERN --exclude-from=FILE skip files matching any file pattern from FILE --exclude-dir=PATTERN directories that match PATTERN will be skipped. -L, --files-without-match print only names of FILEs with no selected lines -l, --files-with-matches print only names of FILEs with selected lines -c, --count print only a count of selected lines per FILE -T, --initial-tab make tabs line up (if needed) -Z, --null print 0 byte after FILE name 前後の表示に関する制御: -B, --before-context=NUM 一致した前の NUM 行を表示する -A, --after-context=NUM 一致した後の NUM 行を表示する -C, --context=NUM 一致した前後 NUM 行を表示する -NUM same as --context=NUM --group-separator=SEP use SEP as a group separator --no-group-separator use empty string as a group separator --color[=WHEN], --colour[=WHEN] use markers to highlight the matching strings; WHEN is 'always', 'never', or 'auto' -U, --binary do not strip CR characters at EOL (MSDOS/Windows) FILE が '-' の場合、標準入力から読み込みます。FILE を指定しない場合、ディレクトリーを再帰的に 処理する場合は '.'、それ以外は '-' となります。FILE を1個だけ指定した場合は -h も有効になります。 終了コードは、行が選択された場合は 0、それ以外は 1 です。エラーが発生して -q を指定していない 場合の終了コードは 2 になります。 バグを発見したら <bug-grep@gnu.org> に報告して下さい。 翻訳に関するバグは<translation-team-ja@lists.sourceforge.net>に報告してください。 GNU grep のホームページ: <http://www.gnu.org/software/grep/> GNU ソフトウェアを使用する際の一般的なヘルプ: <http://www.gnu.org/gethelp/>
「grep」コマンドの使い方は以上となります。
エンジニアのオンライン学習
エンジニアにおすすめのオンライン教材比較 | |
ITエンジニアが自宅で学習ができるオンラインスクール比較 | |