awk

先頭 n 行と末尾 n 行を出力するワンライナー

awk

先頭 n 行を見たいときには head を使う。末尾 n 行を見たいときには tail を使う。先頭 n 行と末尾 n 行を見たいときがある。head が「後略」で tail が「前略」だとすると、結果の「中略」を見たいときなんかに使う。次のようにしてみた。 [takeyuki@sunya…

テキストファイルをランダムに並べ替えるワンライナー

awk

テキストファイルをランダムに並べ替えたい。すぐ思い浮かぶのは、ランダムな数値を先頭フィールドに追加してソート、そのあと数値フィールドを削除、というもの。ただ、やりがちなのは (そしてたいていの場合、それで済むのだが (そのときに応じて使い捨て…

ソート済みのファイルの、重複する項目を出力するワンライナー

awk

重複する項目を出力するワンライナーを書く。ファイルはソート済みであるとする。ここでは、/usr/bin/ にあるファイルの先頭 3 文字とファイルサイズを例にとる。 [takeyuki@sunya ~]$ ls -l /usr/bin | awk '$9==""{next}{print substr($9,1,3),$5}' | sort…

項目ごとの数を数える gawk スクリプト、ただし入力はソート済

awk

a a a b c c というデータの場合に、a が 3 個、b が 1 個、c が 2 個、のように項目ごとの数を数える awk のイディオム。入力ファイルはソートしておく。とりあえず第一フィールドについてカウントするもの。 { if (prev != "" && prev != $1) { printout()…

文字列を分割して表示すると、一部消えてしまう問題に悩む修行

awk

URL が一覧されたファイルがある。各 URL をスキーマ、ドメインなどに分割しようと awk スクリプトを書いた。しかし、一部はきちんと分割されているらしいのだが、文字列の途中で消えてしまうものがある。 かなり悩んだ。 出力をファイルにリダイレクトして…

dprofpp の出力をパッケージ単位でまとめてみる修行

dprofpp の出力をパッケージ単位でまとめる awk。dprofpp 自体にはこういうオプションないよね。-G は近いけど。 NR < 5 { next; } { method = $7; package = method; sub(/::[^:]*$/, "", package); time[package] += $1; } END { for (p in time) { print …