目標

正規表現について概要を理解できる。
代表的なテキスト処理のコマンドを確認して利用できる。

正規表現の概要と記述方法

正規表現の概要と記述方法

正規表現とは

ある文字列の集合(パターン)を特殊な記号を用いて表現することを正規表現といいます。正規表現を用いて文字列の検索や置換を行うことができます。

正規表現の記述方法

正規表現の一覧表と記述例
メタ文字表現内容
.任意の1文字を表現
*直前の文字の繰り返し(0回以上)
+直前の文字の繰り返し(1回以上)
?直前の文字の繰り返し(0~1回)
^文字直後の文字が行頭にある
文字$直前の文字が末尾にある
\(エスケープ)直後のメタ文字を通常の文字として扱う
文字列|文字列「|」の前の文字列か後の文字列のいずれか
[文字列][]内の文字列のいずれか1文字
[^文字列][]内の文字列以外の1文字
[文字1文字2]文字1から文字2の範囲
^0[5789]0-\d{4}-\d{4}$携帯番号
\w[a-zA-Z_0-9]と同じ意味
\d[0-9]と同じ意味
\..を表現

メールアドレスの正規表現の例
([a-zA-Z0-9])+([a-zA-Z0-9._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9._-]+)+

テキスト処理コマンド(Part.3)

テキスト処理コマンド(Part.3)

テキスト処理コマンド(Part.3)

各コマンドのオプションについての詳細は参考資料をご確認下さい。ここでは「何をするものなのか」「どんな記述ルールがあるのか」のみ取り上げています。利用方法については記事内の「実際の操作」で利用しているものについて解説しています。

grepコマンド

ファイル内の文字列を検索するコマンドです
文法:
grep [省略できるOP] 検索のパターン ファイル名
コマンド | grep [省略できるOP] 検索のパターン
※OP:オプションのことです。
コマンドの参考資料はこちら

grepは「Global Regular Expression Print」の頭文字のことです。
パターンの部分に正規表現を利用します。
オプションには次のようなものが利用されます。
「c」:パターンがマッチした行数をカウントしてカウント数を表示
「f」:grep -f 条件ファイル① 検索ファイル②
「i」:大文字と小文字を区別しません。
「r」:引数にディレクトリを指定し再帰的に全ファイルを検索する。
「v」:パターンがマッチしない行を出力します。
「E」:拡張正規表現を利用できます。
(→egrepコマンドでも同様の操作が可能です)

※fgrepコマンドはメタ文字を通常の文字列として扱います。「\」や「^」をそのまま検索できます。オプションの「F」と同様の操作です。

grepコマンドを利用したいくつかの検索を行ってみたいと思います。

まずはファイルから該当する文字列の行数を出力します。今回は同時に2つのファイルを指定しています。

[rocky001@rockylinux001 ~]$ grep -c baseball rocky1.txt rocky2.txt
rocky1.txt:2
rocky2.txt:2

続いて、末尾に「ball」がついている文字列を検索してみます。

[rocky001@rockylinux001 ~]$ grep ball$ rocky1.txt
baseball
basketball
volleyball
basketball
volleyball
baseball
basketball
volleyball
basketball
volleyball

次は拡張正規表現「|」を利用してsoccerとgolfのいずれかに該当する文字列を検索してみます。
[rocky001@rockylinux001 ~]$ grep -E ‘soccer|golf’ rocky1.txt
soccer
golf
golf
soccer
golf
golf
soccer
golf
golf
soccer
golf
golf

最後に先頭に「b」がきて次がに任意の一文字、そしてそれを0回以上繰り返して末尾が「l」の文字列を検索してみたいと思います。

[rocky001@rockylinux001 ~]$ grep ‘^b.*l$’ rocky1.txt

sedコマンド

ファイル内の文字列に対して指定した文字列に変換(一時的な置換)を行って標準出力に出力するコマンドです
文法:
sed [省略できるOP] コマンド ファイル名
sed -e ‘s/検索文字列/置換後の文字列’ ファイル
「e」オプションを利用するとコマンドを複数利用できます。
sed -e ‘s/abc/ABC’ -e ‘s/def/DEF’ ファイル
※OP:オプションのことです。
コマンドの参考資料はこちら

sedは「Stream EDitor」の略です。sedコマンドでは「e」オプションと「d」「s」「y」のコマンドをよく利用します。
「d」:マッチした行を非表示
「s」:マッチした箇所を置換
「y」:文字を置換

sedコマンドを利用した操作を行ってみたいと思います。まずは指定した行の範囲を非表示にしてみます。

[rocky001@rockylinux001 ~]$ sed 1,20d rocky1.txt

次は文字を検索して置換してみたいと思います。これにはsコマンドを利用します。文字を置換する場合、一行に同じ文字が複数あっても、各行で最初の文字のみが置換の対象となります。

[rocky001@rockylinux001 ~]$ sed s/a/A/ rocky1.txt

結果として「bAseball」のように変更されます。

次のようにsコマンドの最後に「g」を付けると一行に同じ文字が複数あっても全てが置換の対象となります。

[rocky001@rockylinux001 ~]$ sed s/a/A/g rocky1.txt

「bAsebAll」のようになります。

「e」オプションを利用して複数の文字列を置換できます。(置換のコマンドを複数利用できます。)

[rocky001@rockylinux001 ~]$ sed -e s/soccer/SOCCER/ -e s/golf/GOLF/ rocky1.txt

今回は以上になります。

「Linux」おすすめ書籍6選【初心者・脱初心者用】| 現役エンジニア&プログラミングスクール講師「Linux」初心者の方がLinuxの操作や仕組みを理解するためのお勧めの書籍について取り上げています。また中級者として更に進んだ学習ができる書籍についても1冊取り上げています。ページの下部には「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中。...

ブックマークのすすめ

「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】について解説している記事です。削除方法も掲載しています。...
【パソコン選び】失敗しないための重要ポイント | 現役エンジニア&プログラミングスクール講師【パソコン選び】失敗しないための重要ポイントについての記事です。パソコンのタイプと購入時に検討すべき点・家電量販店で見かけるCPUの見方・購入者が必要とするメモリ容量・HDDとSSDについて・ディスプレイの種類・バッテリーの持ち時間や保証・Officeソフト・ウィルス対策ソフトについて書いています。...