sed や awk、grep、その他のプログラム処理で文字列を扱うときに、よく用いられる「正規表現」についてまとめます。
正規表現とは
正規表現とは、文字列集合を特殊文字(メタキャラクタ)で表現する方法です。メタキャラクタには、$(ダラー)や^(サーカムフレックス)、[](ブラケット)などが良く使われます。例えば、[0-9]は0〜9の数字のどれか、[Ww]ordはWordもしくはwordです。使うプログラムによって、正規表現の詳細は異なる場合がります。共通して使える基本的なものを中心に覚えると良いと思います。
基本的な正規表現メタキャラクタ2
行の先頭でマッチ
行の先頭が指定した文字に一致するものにマッチする。
- 書式
^(サーカムフレックス) - 例
^a(aから始まる文字。apple、arrow、a123など) - 使い方
$ echo "WoW" | sed 's/^W/h/g' hoW
行の末尾でマッチ
行の末尾が指定した文字に一致するものにマッチする。
- 書式
$(ダラー) - 例
e$(eで終わる文字。apple、see、a123eなど) - 使い方
$ echo "elle" | sed 's/e$/E/g' ellE
繰り返し部分にマッチ
直前の1文字が指定回数出現した部分にマッチする。\{n\}は、ちょうどn回。\{n,\}は、n回以上。\{n,m\}は、n〜mの任意の回数。
- 書式
\{n,m\} - 例
10\{2,3\}(1000か10000) - 使い方
$ cat bbb.txt word wood sky $ cat bbb.txt | sed 's/o\{2\}/-/' word w-d sky cat bbb.txt | sed 's/o\{1\}/-/' w-rd w-od sky $ cat bbb.txt | grep -e "o\{2\}" wood
特殊文字の機能を消失
特殊文字の機能を消失する。
- 書式
\(バックスラッシュ) - 例
\( は、'(‘。良く用いられる例は、\( \) \{ \} \\。 - 使い方
$ echo "\" 表示できない。 $ echo "\\" \(\が表示できる)
関連記事
正規表現 メタキャラクタ 検索・置換 前編
sed や awk、grep、その他のプログラム処理で文字列を扱うときに、よく用いられる「正規表現」についてまとめます。 とにかく早く問題解決したい人はこちら>>直接、データ解析相談 正規表現とは 正規表現とは、文字列集合を特殊文字(メタキ...
正規表現 メタキャラクタ 検索・置換 前編
sed や awk、grep、その他のプログラム処理で文字列を扱うときに、よく用いられる「正規表現」についてまとめます。 とにかく早く問題解決したい人はこちら>>直接、データ解析相談 正規表現とは 正規表現とは、文字列集合を特殊文字(メタキ...
awk 置換や部分文字列などの文字列処理 gsub sub match index split 等
awkの文字列関数について、置換や部分文字列処理など、よく使う代表的なものを簡単なサンプルを使って紹介します。 awk 置換 文字列置換 gsub sub gsub・subは、対象となる文字列tについて正規表現rにマッチした部分を置換文字列...
awk 複数行の処理
ファイルには様々な形式があります。1行単位で記述されたCSV(カンマ区切り)ファイルやTSV(タブ区切り)ファイルは、awkやsed、その他のbashコマンドなどを使っても比較的処理がしやすい。しかし、複数行でレコードが構成される場合(1行...
awk split | サンプルでわかる列の分割とセパレータ指定方法
awkのsplit関数は、セパレータを指定して文字列を分割することができます。セパレータには文字や正規表現で指定できて、指定しない場合はフィールドセパレータがデリミタとして使われます。分割後の単語は、配列に格納されて1〜分割数nまでのインデ
awk while・do 繰り返し処理
awkの繰り返し処理(for・while・do)についてまとめます。今回は、while・doについて。 とにかく早く問題解決したい人はこちら>>直接、データ解析相談 awk while 繰り返し処理 条件を満たせば「ずっと」繰り返しを行いま...
404 NOT FOUND | バイオインフォ 道場 [bioinfo-Dojo]
バイオインフォ 道場
404 NOT FOUND | バイオインフォ 道場 [bioinfo-Dojo]
バイオインフォ 道場
awk 配列 使い方
awkでは、他のプログラミング言語のように配列を使うことができます。配列の簡単な使い方のまとめです。 とにかく早く問題解決したい人はこちら>>直接、データ解析相談 awk 連想配列 awkの配列では、インデックスには文字列でも数字でも使うこ...
awk よく使うシステム変数と使い方
awkのスクリプトでは、参照や設定が可能な「特殊な変数(システム変数)」を使うことができます。 とにかく早く問題解決したい人はこちら>>直接、データ解析相談 よく使うシステム変数 awkのスクリプトでシステム変数を使うと、より簡潔にスクリプ...
awk パターンとアクション
awkは、入力行に対してフィルタリングなどの処理を行う際によく用いられます。入力行に対して「どの行に処理を行うか」を指定するのがパターン、「どんな処理を行うか」を指定するのが「アクション」です。 とにかく早く問題解決したい人はこちら>>直接...
awk 区切り文字とフィールド
awkは、入力の各行を区切り文字でフィールドに分割して、それぞれを個別に取り出すことができます。 とにかく早く問題解決したい人はこちら>>直接、データ解析相談 awk 区切り文字の変更 入力行をフィールドに分割するのは区切り文字です。デフォ...
awk コマンドラインでの実行とスクリプトファイルでの実行
awkを実行する場合、コマンドラインで指定する方法と、スクリプトファイルを指定する方法があります。 とにかく早く問題解決したい人はこちら>>直接、データ解析相談 awk コマンドラインで指定する patternとactionは、シングルクォ...
awk 使い方 フィールド取り出し スクリプトの書き方
awkで簡単なフィールドデータの取り出しを行います。awk は入力された行について、空白やタブで区切られたデータをフィールドと解釈します。・…を指定することで、各行のフィールドを取り出すことができます。尚、https://bioinfo-dojo.net/2016/02/18/awk_easy_field_filter/は入力行全体です。se...
sed スペース 空白文字の整理・空白行の削除
sed で、スペース・タブ、空行に関する処理をまとめました。これらは、フィールドやレコードのセパレータとして使われるので、使いこなせるようになるとデータ解析の前処理が楽になります。 スペース・タブ(空白文字)の処理 複数のスペースを1つにす...
SED 便利な使い方 ファイル読み込み・ファイル書き出し
sedのファイル読込みコマンド(r)・ファイル書き込みのコマンド(w)が便利です。指定の位置に外部ファイルからデータを読み込んだり、パターンにマッチした部分を一括で複数のファイルに分割するなどの便利な処理を行うことができます。知っていれば、...
sed コマンド 行指定の置換・削除(アドレッシング)
sedコマンドの処理は行単位です。何も指定しなければすべての行が対象になりますが、アドレシングを指定することで特定の行だけに作用させることができます。 とにかく早く問題解決したい人はこちら>>直接、データ解析相談 sed コマンド 行指定の...
sed コマンド 削除(行番号とパターン)
sedで行の削除を行う際はdコマンドを使います。アドレスやパターンと一緒に指定します。アドレスの指定は、dコマンドの直前に行番号を指定します。ちなみに、末尾は$で表現可能です。パターンの指定は、行の特徴を正規表現で指定します。 とにかく早く...
sed コマンド 置換(全体と部分指定)
sedで置換を行う際はsコマンドを使います。マッチしたパターン全てに置換処理を適用したい場合は、gフラグを指定します。一方、部分的に置換処理を適用したい場合は数字を指定します。 とにかく早く問題解決したい人はこちら>>直接、データ解析相談 ...
sed コマンド 置換・削除・アドレッシングまとめ
sedはとても便利なツールです。 よく使うコマンドやアドレシング・否定の指定方法など、ちょっとしたテクニックも知っておくと便利です。 とにかく早く問題解決したい人はこちら>>直接、データ解析相談 よく使うsedコマンド 置換や削除はよく使い...
sed コマンド スクリプトファイルの実行 スクリプトの書き方
sedはテキスト編集ツールとして有名なツールの1つです。 フィルタリングや置換処理を行うときに使います。 とにかく早く問題解決したい人はこちら>>直接、データ解析相談 sedの書き方 コマンドライン中で簡単なフィルタリングを行ったり、コマン...
sed コマンド 単純な置換
sed で単純な文字列置換を行います。sed の置換コマンド「s」を使います。 複数のコマンドを並べて、連続で置換処理を行うことができます。 とにかく早く問題解決したい人はこちら>>直接、データ解析相談 sed の書き方(置換) sed '...