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
    

ポイント

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