awkで列方向に集計する。
合計、平均、分散、標準偏差
列方向の集計やりづらいなって思ってたけど、for (i=1;i<=NF;i++)使って楽チン。
集計するファイル↓↓
hoge.txt
840 394 783 798 911 197 335 768 277 553 477 628 364 513 952 916
awkファイル↓↓
sum.awk
BEGIN { print "sum", "ave", "var", "std" } { sum=0; for (i=1;i<=NF;i++){ sum+=$i }; ave=sum/NF; varTemp=0; for (i=1;i<=NF;i++){ varTemp+=($i-ave)^2 }; var=varTemp/NF; std=sqrt(var); print sum, ave, var, std }
スクリプトの実行と結果。
awk -f sum.awk hoge.txt sum ave var std 2815 703.75 32418.2 180.051 2211 552.75 87162.2 295.232 1935 483.75 17098.7 130.762 2745 686.25 64317.2 253.608
awkで重複行を高速削除する。
awkで重複行を高速削除する。
行の重複削除で調べるとよく出てくるのが、sort & uniqを使ったコマンド。 ソートはファイルが大きくなると、実行にかなり時間がかかってしまいますね。
ソートせずに高速実行できるのが、次のawkコマンド。
awk '!colname[$1]++{print $1}'
こういうファイルがあって、一列目の名前を取得したいとき、!colname[$1]は、データをキーにした連想配列で、インクリメントされる。
ボブ りんご | colname["ボブ"] → 0 {print $1} マイケル まんが | colname["マイケル"] → 0 {print $1} マイケル まんが | colname["マイケル"] → 1 サブロー PC | colname["サブロー"] → 0 {print $1} サブロー キーボード | colname["サブロー"] → 1 ステファン PC | colname["ステファン"] → 0 {print $1} サブロー まんが | colname["サブロー"] → 2 ステファン まんが | colname["ステファン"] → 1
条件として!をつけているので、二回目以降はFalseとなって、そのデータが最初に現れた行だけを出力するというわけ。ソートは要らないね。
対象の列番号を変えたいときは、上のコマンドの$1を$2とか$3とかにすればおk。
Evernoteをもっとカッコよく使うためのChrome拡張
Markdownを使おう
みんな大好きEvernote。 ちょっとしたノート代わりに書き込んだり、Todoメモや備忘録としても使えて、何よりクラウドで共有できるのが便利ですよね。 自分も思いついたことは何でもEvernoteに書き溜めているのですが、文字の大きさとか文の構造とかをカッコよく、サクサク書けたらなと考えていました。
いろいろ探してみたところ、Markdown記法で書けるようになる拡張機能が良さげなので、Chromeに追加してみました。
ちなみに、Markdown記法ってなに?っていう人。Markdown記法の特徴は、
- 文構造が直感的で覚えやすい。
- htmlタグより簡単に書ける。
- 表とか数式も表示できる。
- プラットホームを選ばない。
という感じでしょうか。 とっても簡単です。くわしくはこのあたりを。Markdown記法 チートシート
Markdown Here
追加したアプリは、 Markdown Here というChrome拡張機能です。 safariやfirefoxでも動作するみたいです。
アプリを追加したら、EvernoteにMarkdownで書き込んで....
ショートカットキーで「Ctrl」+「alt」+「m」と打つと、一発でMarkdownに変換されます。かっちょいー!!
ちなみにHTMLタグも変換してくれるので、HTMLに慣れてて、Markdown覚えるのめんどくさいという方にもオススメです。