検索でよく使う組み合わせ(正規表現・パイプなど)

検索でよく使う組み合わせ(正規表現・パイプなど)

検索コマンドと一緒に使うコマンドや記号

正規表現(ワイルドカード・メタキャラクタ)

幾つかの文字列をまとめて表現するための方法。

パイプ

コマンドの出力結果を、そのまま別のコマンドに、引数として渡すために利用する。

findコマンド + exec オプション

詳しくはこの後説明します!

正規表現(ワイルドカード・メタキャラクタ)

正規表現とは、幾つかの文字列をまとめて表現するための方法であり、

ワイルドカードやメタキャラクタとは、正規表現を実現するために使用する記号です。

主に探す語句が完全に一致していなくても、データを抽出する「あいまい検索」のために使用します。

正規表現によって、より高度な検索を実現することができます。

※ メタキャラクタについて

コマンドを実行するプログラムをシェルと言いますが、このシェルにとって特別な意味を持つ文字をメタキャラといいます。

メタキャラクタ・ワイルドカードの一覧

正規表現の代表的な使用例(ワイルドカード・メタキャラクタの組み合わせ)

書式:末尾(拡張子)が、共通の文字列を検索したい

*文字列

実践①:末尾(拡張子)が「.txt」のファイルを検索する

「findコマンド」を使って、ファイル名の末尾(拡張子)が「.txt」のファイルの一覧を取得します。

[user01@localhost ~]$ find  -name "*.txt"
./hday.txt
./test.txt

書式:ディレクトリ内の全てのファイルを検索したい

ディレクトリのパス/*

実践③:同じディレクトリ内の全てのファイルを対象に検索する

「grepコマンド」を使って「default」ディレクトリの全てのファイルに対して、「bash」という文字列をを含む、全ての行を検索します。

[user01@localhost ~]$ grep bash /etc/default/*
/etc/default/useradd:SHELL=/bin/bash

パイプ

あるコマンドの出力結果を、(標準入力として)そのまま別のコマンドに引数として渡すために利用します。
既にgrepコマンドの解説時に紹介しましたが、特定のコマンドの出力結果から、特定の内容を抽出する際にもよく使われます。

書式(正規表現):行頭の数文字が共通の文字列を検索

^文字列 または 文字列.*

実践①:パイプ + grepコマンド

「locateコマンド」の実行結果から、grepコマンドを使って行頭が「etc」の行を検索します。

[user01@localhost~]$ locate hosts | grep '^/etc'
/etc/hosts
/etc/hosts.allow
/etc/hosts.deny
/etc/samba/lmhosts

※メタキャラクタ(「*」や「^」など)を使う場合は、ファイル名パターンを引用符「’」で囲みます

実践②:パイプ + headコマンド

「ls –l」コマンドの実行結果の中から、headコマンドを使って開始の5行を取得します。

[user01@localhost ~]$ ls -l /etc |head -5
合計 1284
-rw-r--r--.  1 root root     5090  8月  6  2019 DIR_COLORS
-rw-r--r--.  1 root root     5725  8月  6  2019 DIR_COLORS.256color
-rw-r--r--.  1 root root     4669  8月  6  2019 DIR_COLORS.lightbgcolor
-rw-r--r--.  1 root root       94  2月 25  2017 GREP_COLORS

実践③:パイプ + tailコマンド

「ls –l」コマンドの実行結果の中から、tailコマンドを使って終わりの5行を取得します。

[user01@localhost ~]$ ls -l /etc |tail -5
drwxr-xr-x.  4 root root       38  1月 19 11:25 xdg
drwxr-xr-x.  2 root root        6  4月 11  2018 xinetd.d
drwxr-xr-x.  6 root root      149  1月 19 12:56 yum
-rw-r--r--.  1 root root      970  8月  8  2019 yum.conf
drwxr-xr-x.  2 root root     4096  1月 29 17:50 yum.repos.d

NEXT>> 文字列の検索で使うコマンド