Mac の awk コマンド:
使い方、オプション、正規表現など
UB3/informatics/commands_mac/awk_mac
このページの最終更新日: 2024/09/30- 概要: awk の使い方
- 実例1: awk で fastq ファイルから fasta ファイルを作る
広告
概要: awk の使い方
awk (オークと読む) は Mac の terminal で使えるコマンドの一つであるが、他のコマンドとは少し違っていて、それ自体が一つのスクリプト言語である (2)。
つまり、同じくテキスト処理に使われる grep や cut よりも高度なスクリプトが書きやすいらしい。
awk は、以下の 3 つの基本動作を指定したファイルに対して行う (1)。
- テキストを 1 行読み込む。
- スペースを区切り文字のデータとして解釈する。最初のスペースまでが $1、次のスペースまでが $2 のように表される。
- それぞれの区切りに対して、指定された処理をする。
awk コマンドを実行する際には、3 の「処理」を指定することになる。
実例1: awk で fastq ファイルから fasta ファイルを作る
fastq ファイルとは、次世代シークエンスのデータを SRA データベースからダウンロードしたときのフォーマットであり、一つの配列が以下の 4 行にわたって情報を含んでいる。
- 1 行目は @、配列 ID および配列の説明 (optional)。FASTA の > の行に相当する。
- 2 行目は配列。折り返しは最近では認められない。
- 3 行目は +。その後ろに ID がつくこともあるようだ。
- 4 行目は、2 行目に記した配列のクオリティ値。それぞれの塩基にこの値があるので、2 行目と 4 行目の文字数は同じになる。
@Seq_ID Additional informations (optional) |
このサイトでは、以下のようなページが関係している。
FASTA は 1 行目に > と配列情報、2 行目に配列という単位が複数の配列について繰り返される形式である。したがって、awk を使って下す命令は以下のようになる。
- fastq ファイルから 1 および 2 行目を抜き出す。
- 1 行目の先頭に > を追加し、別のファイルに書き出す。
- これをすべての配列セットについて繰り返す。
コマンドは次のようになる。
- cat で file1.fastq というファイルを読み込み、それを | で awk にパイプする。
- ' ' で囲った部分が awk の命令。NR は現在処理している行を、% は除算。NR % 4 == 1 は、「現在処理している行を 4 で割ったら 1 余る場合」、すなわち 1、5、9... 行目に関する指定である。
- 上の行に > を加えて、file1.fasta というアウトプットファイルの $0 にプリントする。
- $0 は awk の組み込み関数で、全ての行の内容が入る場所として扱われる。つまり「a (スペース) b (スペース)c」という行があれば、$1 = a, $2 = b, $3 = c, $0 = a b c である。
- 同様に、NR % 4 == 2 は 2、6、10... 行目の内容、すなわち配列である。この場合 > は追加せずに、そのまま print すればよい。
fastq から fasta を作るには、FASTX Toolkit 3 を使う方法もある。しかし、Mac の基本的なコマンドである awk を使った方が、バージョンアップなどの際に問題が生じることが少なく、安全そうな気がする。
広告
References
- なるべく書かないawkの使い方. Link: Last access 2018/02/05.
- AWK リファレンス. Link: Last access 2018/02/05.
- Last access 2018/02/05.
コメント欄
サーバー移転のため、コメント欄は一時閉鎖中です。サイドバーから「管理人への質問」へどうぞ。