知っておくとちょっと便利!正規表現の活用法1

今号では、知っておくと便利な正規表現の活用法についてご紹介します!

正規表現とは

正規表現とは、文字列のパターンを表現する表記方法です。
例えば多数の文字列 (ファイルの一覧、テキストファイルの中身など) の中から、指定した文字列のパターンに一致するいくつかの文字列を抜粋したい時などに使用します。
今回は、ファイルの検索 (find)、ファイルの内容の検索 (grep)、シェルスクリプトの観点で、
知っておくとちょっと便利な活用法についてご案内します。

知っておくとちょっと便利な正規表現 ~文字の指定編~

  • 任意の 1文字を示す
    . を指定すると、任意の 1文字を示します。
    例えば、下記のように grep コマンドで . を指定した場合、任意の 1文字 (つまりすべての文字) を表示します。
    $ cat test1.txt
    1
    10
    100
    1000
    10000
    $ grep . test1.txt
    1
    10
    100
    1000
    10000
    

    また、下記のように ….. と . を 5つつなげた場合、5文字の文字列のみを表示します。

    $ grep ..... test1.txt
    10000
    
  • 先頭の文字を示す
    任意の 1文字の前に ^ を指定すると、その文字が先頭の文字であることを示します。
    例えば、下記のように grep コマンドで ^3 を指定した場合、3 から始まる文字のみを表示します。
    $ cat test2.txt
    1
    2
    3
    4
    5
    $ grep ^3 test2.txt
    3
    
  • 末尾の文字を示す
    任意の 1文字の後に $ を指定すると、その文字が末尾の文字であることを示します。
    例えば、下記のように grep コマンドで 5$ を指定した場合、5 で終わる文字のみを表示します。
    $ cat test3.txt
    5
    10
    15
    20
    25
    $ grep 5$ test3.txt
    5
    15
    25
    
  • 文字を 0回以上繰り返す
    任意の 1文字の後に * を指定すると、その文字を 0回以上繰り返すことを示します。
    例えば、下記のように grep コマンドで 100* を指定した場合、10 (0 を 0回繰り返し) から 10000 (0 を 3回繰り返し) までの文字を表示します。
    $ cat test1.txt
    1
    10
    100
    1000
    10000
    $ grep 100* test1.txt
    10
    100
    1000
    10000
    
  • いずれかの 1文字を示す
    任意の文字を [] で囲むと、[] のいずれかの 1文字を示します。
    例えば、下記のように “text[123]” を指定して find コマンドを実行した場合、text1、text2、text3 の 3つのファイルが結果として表示されます。
    $ find . -name "text[123]"
    ./text1
    ./text2
    ./text3
    

    ls コマンドでも使用することができます。

    $ ls text[123]
    text1  text2  text3
    
  • 任意のアルファベット・数字を示す
    [a-z] はa から z までの英小字、[A-Z] は A から Z までの英大字、[0-9] は 0 から 9 までの数字を示します。
    $ cat test4.txt
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ grep [0-9] test4.txt
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    

    なお、[0-2] のように記載すると 0 から 2 までの数字となり、範囲を変えることができます。
    英小字、英大字についても同様に [] 内に記載する文字によっては範囲が変わります。

    $ grep [0-2] test4.txt
    0
    1
    2
    
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です