検索でよく使う組み合わせ(正規表現・パイプなど)
検索でよく使う組み合わせ(正規表現・パイプなど)
検索コマンドと一緒に使うコマンドや記号
正規表現(ワイルドカード・メタキャラクタ)
幾つかの文字列をまとめて表現するための方法。
パイプ
コマンドの出力結果を、そのまま別のコマンドに、引数として渡すために利用する。
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