- 標準入力をそのまま標準出力に出力する。
- $ cat foo.txt | awk '{print $0}'
- 標準入力をそのまま標準出力に出力する。
- $ cat foo.txt | awk '1'
- 空行を削除する。
- $ awk '/./' foo.txt
- 空行を削除する。
- $ awk 'NF' foo.txt
- 最初の 10 行を表示する。
- $ awk 'NF >= 10' foo.txt
- 一行ごとに改行を追加する。
- $ awk '1;{print ""}' foo.txt
- 一行ごとに改行を追加する。
- awk 'BEGIN{ORS="\n\n"};1' foo.txt
- ファイルに行番号を付ける。
- $ awk '$0 = NR OFS $0' foo.txt
- ファイルに行番号を付ける。
- $ awk '{print NR "\t" $0}' foo.txt
- ファイル毎に行番号を付ける。
- $ awk '{prin FNR "\t" $0}' foo*.txt
- 行番号を 4 桁で表示させる。
- $ awk '{printf("%4d : %s\n", NR, $0)}' foo.txt
- 最も長い行の長さを表示する。
- $ awk '{if (length($0) > max) max = length($0)} END {print max}' foo.txt
- 80 文字を越える行を表示する。
- $ awk 'length($0) > 80' foo.txt
- 0 から 100 までの間の乱数を 5 つ表示する。
- $ awk 'BEGIN {for (i = 1; i <= 7; i++) print int(101 * rand())}'
- ファイルの行数を数える。
- $ awk 'END {print NR}' foo.txt
- 奇数行を表示する。
- $ awk 'NR % 2 == 1' foo.txt
- 偶数行を表示する。
- $ awk 'NR % 2 == 0' foo.txt
- 最初の 1 行を表示する。
- $ awk 'NR == 1' foo.txt
- 最初の 1 行を表示する。
- $ awk '{print; exit}' foo.txt
- 最後の 1 行を表示する。
- $ awk 'END {print}' foo.txt
- 最後の 1 行を表示する。
- $ awk '{last = $0} END {print last}' foo.txt
- 同一行の削除を行う。(uniq)
- $ awk 'a !~ $0; {a = $0}' foo.txt
- 同一行の削除を行う。(uniq)
- $ awk '{if ($0 != line || NR == 1) print; line = $0}' foo.txt
- 行のソートを行う。(gawk 以上)
- $ gawk '{line[NR] = $0} END {asort(line); for (i = 1; i <= length(line); i++) print line[i]}' foo.txt
- 10 行目から 20 行目までを表示する。
- $ awk 'NR == 10, NR == 20 {print $0}' foo.txt
- 1 から 10 までの数字を生成する。
- $ awk 'BEGIN {for (i == 1; i <= 10; i++) print i}'
- '#' で始まるコメントを削除する。
- $ awk '{sub(/#.*/, "", $0)}1' foo.txt
- さいころを作る。
- $ awk 'BEGIN {srand();print int(rand() * 6 + 1)}'
- ワード数をカウントする。
- $ awk '{n += NF} END {print n}' foo.txt
- 文字数をカウントする。
- $ awk '{n += length($0)} END {print n}' foo.txt
- Load Average を表示する。(Linux のみ)
- $ awk '{print $1}' /proc/loadavg
- yes コマンドを作る。(延々と 'y' を返す)
- $ awk 'BEGIN {for (;;) print "y"}'
- yes コマンドを作る。(延々と 'y' を返す)
- $ awk 'BEGIN {while (awk != "Perl") print "y"}'
- Apache のログにある IP アドレスからホスト名をリアルタイムで引く。(root のみ)
- # tail -f /var/log/httpd/access_log | gawk '{system ("dig -x" $1 " +short")}'
- Apache のログからリンク元をリアルタイムで表示する。(root のみ)
- # tail -f /var/log/httpd/access_log | gawk -F\" '$4!~/gauc/&&$4!="-"{fflush();print $4}'
- CSV (カンマ区切り) から TSV (タブ区切り) への変換を行う。
- $ awk -v FS=',' -v OFS='\t' '$1=$1' foo.txt
- TSV (タブ区切り) から CSV (カンマ区切り) への変換を行う。
- $ awk -v OFS=',' -v FS='\t' '$1=$1' foo.txt
- 各フィールドの和を求める。
- $ awk '{for (i = 1; i <= NF; i++) s += $i} $0=s' foo.txt
- 各行のフィールド数を表示する。
- $ awk '{print NF ":" $0}' foo.txt
- 最後の行のフィールド数を表示する。
- $ awk '{s = NF} END {print NF}' foo.txt
- フィールドが 5 以上の行を表示する。
- $ awk 'NF >= 5' foo.txt
- 改行 CR/LF を LF に変換する。
- $ awk 'sub(/\r$/,"")' foo.txt
- 改行 LF を CR/LF に変換する。
- $ awk 'sub(/$/,"\r")' foo.txt
- 行頭の空白とタブを削除する。
- $ awk '{sub(/^[ \t]+/, "")}1' foo.txt
- 行末の空白とタブを削除する。
- $ awk '{sub(/[ \t]+$/, "")}1' foo.txt
- 行頭と行末の空白とタブを削除する。
- $ awk '{gsub(/^[ \t]+|[ \t]+$/, "")}1' foo.txt
- 行頭と行末の空白とタブを削除する。(フィールドも再構成される)
- $ awk '$1 = $1' foo.txt
- 最後の行から表示する。(tac)
- $ '{a[i++] = $0} END {for (j = i - 1; j >= 0;) print a[j--]}' foo.txt
- 正規表現 abc の行を表示する。(grep)
- $ awk '/abc/' foo.txt
- 正規表現 abc にマッチしない行を表示する。(grep -v)
- $ awk '! /abc/' foo.txt
- Pattern にマッチした前の行を表示する。
- $ awk '/Pattern/ {print a} {a=$0}' foo.txt
- Pattern にマッチした前の行を表示する。
- $ awk '{D[NR] = $0} /match/ {print D[NR-1]}' foo.txt
- ファイルサイズが 0 byte のものを表示する。
- $ ls -al | awk '$5==0 {print $8}'
- Subversion の svn status で '?' の付くファイルを全て svn add する。
- $ svn status | gawk '/^?/{print $2}' | xargs svn add
2016-02-04
awk Tips
awkについてφ(・ω・ )メモメモ
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿