MiracleJobLogo
エンジニアのエンジニアによるエンジニアのためのサイト
News 07/19 おすすめ情報に 『 【資格取得者速報】 Aさん 「 Microsoft Security, Compliance, and Identity Fundamentals」 』 を追加しました。
会員登録するとキャリア診断やサイトに参加することができます。
あなたにおすすめな技術情報、資格、仕事などをお知らせします。

無料会員登録


パスワードを忘れた場合
LINEで送る
MiracleJobBanaLeft1
MiracleJobBanaLeft2


Linuxにおけるワイルドカード・正規表現について
profile-img
投稿者: fujioka090...さん
投稿日:2021/12/06 11:51
更新日:
like-img
分類
技術
テクノロジー
全般
キャリア
運用・保守
投稿内容

今回はLinuxでよく用いられるワイルドカードと正規表現について説明しようと思います。

ワイルドカードと正規表現は両方とも「文字列の集合を一つの文字列で表現する方法」となります。

使用する文字が似ていますが、仕様が異なっている部分もありますので下記に比較表を貼ります。


上記にあるワイルドカードや正規表現を用いることによって、

自分の検索したいファイル名やディレクトリ名、あるいはファイル内の文字列を検索しやすくなります。

例えば下記のようにlsコマンドを使用して、カレントディレクトリ内のファイルを表示します。


[MSI@localhost ~]ls
a.txt abc.txt abbc.txt bcca.txt log.txt temp alarm.txt


次に下記のようにコマンドを打つとaから始まり、txtで終わるファイル名のみを表示することができます。


[MSI@localhost ~]ls a*txt
a.txt abc.txt abbc.txt alarm.txt


ここで使用したのは、ワイルドカードによる文字列検索です。

正規表現を使用する場合は、下記のgrepコマンドを使用します。


[MSI@localhost ~]ls | grep 'a.*txt'
a.txt abc.txt abbc.txt alarm.txt


このコマンドでは|(パイプライン)を使用して、lsコマンドの出力をgrepコマンドに渡して、aから始まり、txtで終わるファイル名を検索することができます。

ここで注意しておきたいのが、正規表現を用いた文字列パターンを'(シングルクォーテーション)で囲っておくという点です。

'(シングルクォーテーション)で囲っておかないと、grepコマンドが正規表現として解釈する前にシェルがワイルドカードとして解釈し、下記のようにa.*txtが展開される可能性があるからです。


grep a.txt


↑このコマンド展開だと、そのままa.txtファイルしか表示されません。


また、コマンドによって正規表現が使用できるものと使用できないものがあるそうです。

そのためワイルドカードを用いるのか、正規表現を用いるのかをコマンド毎に調べて使用する必要があります。



参考URL

よく使う正規表現について整理 - Qiita

Linux【ワイルドカードと正規表現】の違いと変換,展開の動作 ~ ls, grep, findでの具体例の解説~ | SEの道標 (nesuke.com)

【Linux】grepと正規表現チートシート - Qiita

コメント


MiracleJobBanaRight1
MiracleJobBanaRight2
MiracleJobBanaRight3