awk

  • スペース区切りの3、2番目のフィールドをカンマ区切りで抽出
awk '{print $3","$2}' FILENAME
  • セパレータをタブに変更
awk -F "\t" '{print $4}' FILENAME
  • 行全体の文字を参照
awk '{if($0~/LISTEN/)print}' FILENAME
  • 出力された数字を加算していく
awk '{a+=$1}END{print a}' FILENAME
  • 出力された数字を加算して平均を算出
awk '{a+=$1}END{print a/NR}' FILENAME
  • 出力された数字のうち最大値を表示
awk '{if($5>max)max=$5}END{print max}' FILENAME
  • 2つの数字を加算して最大値を表示
awk '{if($5+$6>max){max=$5+$6;a=$5;b=$6}}END{print a"+"b"="max}' FILENAME
  • シェル変数を使用
awk '{if($1=='$HOSTNAME')print $10}' FILENAME
  • 7桁以上の数値を表示する
awk '{CONVFMT = "%4d"}{a += $6}{b += $8}END{print a/NR" "b/NR}' FILENAME
  • 条件を満たす行を全て表示
awk '{if($4 ~ /\/image\/check/ && $5==200){print}}'
  • 2番目のフィールドをグループ集計する
awk '{group[$2]++}END{for(name in group){print name" "group[name]}}' FILENAME
  • 1番目のフィールドをグルーピングして$2を合計する
awk '{group[$1]+=$2}END{for(name in group){print name" "group[name]}}' FILENAME
  • 1番目のフィールドをグルーピングして$2を平均する
awk '{group[$1]+=$2}{count[$1]++}END{for(name in group){print name" "group[name]/count[name]}}' FILENAME
  • 後方参照で置換する
awk -F "\t" '{a=gensub(/^.*:([0-9]+):..:.. .0900.$/,"\\1",1,$4); count[a]++;}}END{for(name in group){print name" "count[name]}}' FILENAME
  • 2つのファイルを1列目と2列目を表示
awk '{a=$1; getline < "file2.log"; print a" "$2}' file1.log