古い記事
ランダムジャンプ
新しい記事
よくやるタスクなので参照用にメモしておく。

■Case1: 指定したカラムの単語にIDをふる。
 
t1.txt :
ABB	123	あいう
ABA	124	えおか
ABA	125	かき 
BBA	130	くけこ
ABA	125	かき 
 
% perl -F"\t" -anle '$t=$F[2];if(!$s{$t}){$s{$t}=++$i;print"$i\t$t"}' t1.txt
1	あいう
2	えおか
3	かき 
4	くけこ
 
■Case2: 2カラム目以降の単語にIDをふる。
 
t2.txt :
P	かっこいい	人	登場
N	ひどい	食事	幻滅
-	こんにちは	よろしく
P	素敵	かっこいい	自転車
N	まったく	ゆるせない	ひどい
 
% perl -F"\t" -anle 'for(@F[1..$#F]){if(!$s{$_}){$s{$_}=++$i;print"$i\t$_"}}' t2.txt
1	かっこいい
2	人
3	登場
4	ひどい
5	食事
6	幻滅
7	こんにちは
8	よろしく
9	素敵
10	自転車
11	まったく
12	ゆるせない

ついでに頻度も数える。

% perl -F"\t" -anle 'for(@F[1..$#F]){$s{$_}=++$i if!$s{$_};$n{$_}++};
END{for(keys%s){print"$s{$_}\t$_\t$n{$_}"}}' t2.txt | sort -n
1	かっこいい	2
2	人	1
3	登場	1
4	ひどい	2
5	食事	1
6	幻滅	1
7	こんにちは	1
8	よろしく	1
9	素敵	1
10	自転車	1
11	まったく	1
12	ゆるせない	1
 
■IDを元の単語に戻す

IDを元の単語に戻すには下記を参照されたい。
- [を] Perl ワンライナーで join する(辞書引き結果を行データに追加するときに便利)[2013-12-23-1]

Case2の最初のやつの出力(t2.dic)を辞書として使った例:

t2.dic : 辞書 (ID to 単語)
1	かっこいい
2	人
3	登場
4	ひどい
5	食事
6	幻滅
7	こんにちは
8	よろしく
9	素敵
10	自転車
11	まったく
12	ゆるせない

b.txt : 何かの処理結果
1	P
4	N
6	N
8	P
9	P
12	N

第1カラムの数字IDを元の単語に戻す:
% perl -F"\t" -anle 'BEGIN{open(h,shift);while(<h>){chomp;@x=split;
$d[$x[0]]=$x[1]}} print"$d[$F[0]]\t$_"if$d[$F[0]]' t2.dic b.txt
かっこいい	1	P
ひどい	4	N
幻滅	6	N
よろしく	8	P
素敵	9	P
ゆるせない	12	N