Unicodeの正規化

アルファベットのoを伸ばしたやつとか、計算機で処理するときはoに戻したい場合が多々ある。
で、そんなときにはUnicode::Normalizaモジュールを使って元に戻します。

use Unicode::Normalize;
my $nfd = NFD($str);

# 私はどうやっても分解された文字が??でついてきちゃったので
# 正規表現で取り除いた
$nfd    =~ s/[^a-zA-Z_0-9\s]//g;

ここで注意。
入力する文字コードはutf8にする。

例えば、データベースから読み込みする場合は

Encode::decode('utf8',$str);

のようにしておく。

Sort、Uniq

サンプル

test.txt
dog 12
cat 8
dog 3
bird 12

Sortコマンド

2つめのフィールドでソート

# -n : 数値としてソート
# -k : フィールド指定
$ sort -n -k2 test.txt
dog 3
cat 8
bird 12
dog 12

Uniqコマンド

2つめのフィールで重複を取り除き、出現回数を表示

# -c : 出現回数を表示
# -f : 行頭からN個めのフィールドを無視
$ sort -c -f1 test.txt
1 dog 3
1 cat 8
2 bird 12

ファイルを分割するSplit

ファイル数が増えて、Splitを使う機会が増えたのだが、いつもオプション忘れて調べなおす羽目になるので、メモ。

行数でファイルを分割する

 ## 2行ごとにファイル分割
 $ split -l 2 file file.

バイト数でファイルを分割する

 ## 500MBごとにファイルを分割
 $ split -b 500m file file.

 ## 10KBごとにファイルを分割
 $ split -b 10k file file.

Screenについて教えてもらった

プログラムが何時間も回っていると接続が切れて中断してしまうことがある。 Screenを使っていると途中から再開できるらしい。おお、すばらしい。
ということでメモ。

インストール方法(debian sargeの場合)

通常にインストールしたらうまくいかなかったので、パッケージを使った

# apt-get install screen

ホームディレクトリに.screenrcを作成して、以下を記述

escape ^z^z

これで、ctr+zがコマンド文字になる。

使い方はscreenで起動、exitで閉じる。
screenコマンド一覧参照