awk よく使うシステム変数と使い方

awkのスクリプトでは、参照や設定が可能な「特殊な変数(システム変数)」を使うことができます。

とにかく早く問題解決したい人はこちら>>直接、データ解析相談

よく使うシステム変数

awkのスクリプトでシステム変数を使うと、より簡潔にスクリプトを表現できます。

システム変数働き
ARGCコマンドライン引数の数
ARGVコマンドライン引数の配列
FILENAMEファイル名
FSフィールドの区切り文字(入力:デフォルト 空白)
OFSフィールドの区切り文字(出力:デフォルト 空白)
RSレコードの区切り文字(入力:デフォルト 改行)
ORSレコードの区切り文字(出力:デフォルト 改行)
NFカレントレコードのフィールド数
NRレコード番号

システム変数の使い方

awkスクリプトでシステム変数を使ってみましょう。簡単な例を紹介します。

ARGC・ARGV

awkのスクリプト実行時に渡した引数の情報を表示します。

awk_sysval1.awk

END {
    # 引数の数を表示
    print "ARGVs   : "ARGC
    # 引数の番号0〜2を順番に処理
    for (x in ARGV) {
        # 引数内容を表示
    	print "ARGV["x"] : "ARGV[x]
    }
}

使い方

$ awk -f awk_sysval1.awk val=aaa myawk.txt
ARGVs   : 3
ARGV[0] : awk
ARGV[1] : val=aaa
ARGV[2] : myawk.txt

FILENAME

awkのスクリプトに渡したファイル名を表示します(処理中のファイル名)。

awk_sysval2.awk

{
    print FILENAME
}

使い方

$ echo aaa > data1.txt
$ echo bbb > data2.txt
$ awk -f awk_sysval2.awk data1.txt data2.txt
data1.txt
data2.txt

FS・OFS

フィールドの区切り文字を変更します。

NF・NR

フィールド番号やレコード番号で処理を制御します。

awk_sysval3.awk

NR(レコード番号)に条件を与えることで、1行目・2行目の表示では1番目のフィールド・最後のフィールドを出力。3行目・4行目の表示では最後のフィールド・1番目のフィールド(順番入れ替え)を表示します。

NR < 3 {
    print $1, $NF
}
NR > 4 {
    print $NF, $1
}

使い方

$ cat awk_sysval_test.txt
1:2:3
4:5:6
7:8:9
A:B:C
D:E:F
G:H:I
$ awk -F: -f awk_sysval3.awk awk_sysval_test.txt 
1 3
4 6
F D
I G

実験データの解析や論文用グラフ作成のヒントになりそうな、プログラミング・統計処理の参考になる書籍をまとめて紹介しています。是非、参考にしてみて下さいね。

とにかく早く問題解決したい人はこちら>>直接、論文相談

関連記事

awk 行の表示 先頭行 最終行 指定行
awk 置換や部分文字列などの文字列処理 gsub sub match index split 等
awk 複数行の処理
awk split | サンプルでわかる列の分割とセパレータ指定方法
awk while・do 繰り返し処理
awk for | サンプルでわかる、基本的な繰返し・変則的な繰返し
awk if サンプルでわかる条件文の書き方 一致・大小比較・正規表現を簡潔に書く方法
awk if サンプルでわかる条件文の書き方 一致・大小比較・正規表現を簡潔に書く方法
awk パターンとアクション
awk 区切り文字とフィールド
awk コマンドラインでの実行とスクリプトファイルでの実行
awk 使い方 フィールド取り出し スクリプトの書き方
正規表現 メタキャラクタ 検索・置換 前編
正規表現 メタキャラクタ 検索・置換 後編



カテゴリー

今週よく読まれている記事

  1. 学会・会議で英語が絶望的にできなくて困るケース | オンライン開催で「英語力のなさ」を痛感した場合の対処法

    学会・会議で英語ができなくてに困るケース学会やイベント・会議などが、オンラインで開催される…
  2. r tidyverse 使い方 | 列 filter 絞り込み select関数 – dplyrパッケージ

    tidyverseで1つのデータフレームの列の絞り込みは、dplyrパッケージのselect関数を…
  3. プログラミングで疲れた脳をリフレッシュ 〜 鬼滅の刃「感動」と「やる気アップ」でストレス発散!

    ストレス発散は鬼滅で。「50%OFF」で読む!脳のパフォーマンスを上げるには、適度な休憩と…
  4. AWS ディスク容量不足 新しいボリュームを追加する

    バイオインフォマティクスでは大きなファイルを扱うことがあるので、ディスク不足に陥ることがあります。…
  5. 「知っている」と「知らない」とでは、もしものとき、大違いになる – コロナうつ対策

    コロナうつなどという言葉を聞くようになりましたが、派遣切り、解雇、リストラは、これから本格化します…

人気記事

  1. R言語

    R subset関数 データフレームやmatrixからの条件指定による行・列の抽出
    R の subset関数は、データフレームやマトリックスか…
  2. IGV, 解析ツール

    IGV 使い方 インストール〜便利な使い方まで | リファレンス・マッピングデータ・アノテーションを読み込んで表示しよう
    IGV(Integrative Genomics View…
  3. Excel, 統計

    z-score 計算方法 エクセル(Excel) 編
    統計処理で、大きく変化しているなどの判断基準にも使われる値…

おすすめ記事

  1. R言語, グラフ

    R 使い方 軸・ラベルの調整(向き・サイズ・色など) グラフの描き方
    Rによるplot(グラフ)の描画は、手軽で大変便利です。た…
  2. シェルスクリプト

    シェルスクリプト | ファイル存在チェック・空ファイルチェック
    bashでスクリプトを作成するときに、よく使うのがファイル…
  3. awk, シェルスクリプト

    bash 部分文字列・置換・長さ・連結・分割の文字列処理
    bashのよく使う文字列処理、部分文字列・置換・連結・長さ…