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

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

【関連記事】 awk 区切り文字とフィールド

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
スポンサーリンク




ランキング


おすすめ記事

ピックアップ記事

  1. tidyverse – distinct関数でデータフレームの重複行を削除 dplyrパッケージ

    tidyverseでデータフレームの重複行の削除を行う場合、dplyrパッケージのdistinct…
  2. R subset関数 データフレームやmatrixからの条件指定による行・列の抽出

    R の subset関数は、データフレームやマトリックスから条件にマッチした部分集合を取り出します…

人気記事

  1. R データ型 - 文字列・ベクター・データフレーム・マトリックス など-, R言語, スクリプト

    R subset関数 データフレームやmatrixからの条件指定による行・列の抽出
    R の subset関数は、データフレームやマトリックスか…
  2. Excel, その他, 統計

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

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

おすすめ記事

  1. awk, bash 文字列操作, シェルスクリプト

    bash 部分文字列・置換・長さ・連結・分割の文字列処理
    bashのよく使う文字列処理、部分文字列・置換・連結・長さ…
  2. bash 応用, シェルスクリプト

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

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