awk 使い方 フィールド取り出し スクリプトの書き方

バイオインフォ道場、くまぞうです。

awkで簡単なフィールドデータの取り出しを行います。awk は入力された行について、空白やタブで区切られたデータをフィールドと解釈します。$1・$2…を指定することで、各行のフィールドを取り出すことができます。尚、$0は入力行全体です。sed と同じように「-f」でスクリプトファイルを指定することができます。

スポンサーリンク



awk の書き方

awk '命令' 対象となるファイル

awk の使い方

簡単な例で「awk」のフィールドデータ取り出しを使ってみましょう。

  1. ファイルの第1フィールドを取り出し
    $ cat awk_data.txt
    >a1 b1 c1 d1,R1
    AAAAAAAAAAAAAAA
    >a2 b2 c2 d2,R2
    AAAAAAAAAAAAAAA
    
     awk '{print $1}' awk_data.txt
    >a1
    AAAAAAAAAAAAAAA
    >a2
    AAAAAAAAAAAAAAA	
    
  2. ファイルの「>」行だけを取り出し
    awk '/>/' awk_data.txt
    >a1 b1 c1 d1,R1
    >a2 b2 c2 d2,R2
    
  3. 「>」行をフィルタリング、第1・第3フィールドを取り出し
    awk '/>/ {print $1,$3}' awk_data.txt
    >a1 c1
    >a2 c2
    
  4. 「>」行をフィルタリング、区切り文字を「,」カンマに変更
    awk -F, '/>/ {print $1}' awk_data.txt
    >a1 b1 c1 d1
    >a2 b2 c2 d2
    
  5. 「>」行をフィルタリング、第1・第3フィールドを取り出し(awk 命令をファイルで提供)
    $cat awk1
    />/ {print $1, $3}
    
    awk -f awk1 awk_data.txt
    >a1 c1
    >a2 c2
    

ポイント

  • スペースの要・不要を区別する。特に、区切り文字の変更のとき不要なスペースを入れない
  • 命令はシングルクォーテーションで囲む
  • 命令内の処理は{}で囲む
  • 行の絞りこみなどの条件で、正規表現を使う場合//で囲む
スポンサーリンク





ピックアップ記事

  1. awk split サンプルでわかる列の分割とセパレータ(文字・正規表現)の指定方法

    awkのsplit関数は、セパレータを指定して文字列を分割することができます。セパレータには文字や…
  2. awk if サンプルでわかる条件文の書き方 一致・大小比較・正規表現を簡潔に書く方法

    awkのif条件文は、条件によって処理をわけたいときに使います。条件式では、0の判定・関係演算子・…
  3. R 使い方 グラフの色 自作のカラーパレットとデフォルトのカラーパレット

    グラフを描画する際、色の組み合わせを1つ1つ考えるのは面倒ですよね。Rには、あらかじめ色の組み合わ…

人気記事

  1. Excel, その他, 統計

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

    IGV 使い方 インストール〜便利な使い方まで | リファレンス・マッピングデータ・アノテーションを読み込んで表示しよう
    IGV(Integrative Genomics View…
  3. R データ型 - 文字列・ベクター・データフレーム・マトリックス など-, R言語, スクリプト

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

おすすめ記事

  1. bash 応用, シェルスクリプト

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

    bash 部分文字列・置換・長さ・連結・分割の文字列処理
    bashのよく使う文字列処理、部分文字列・置換・連結・長さ…
  3. R言語, グラフ

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