名前をID番号に置き換えて、複数の関連ファイルを匿名化したいと思います。
入力例
ファイル1:
2 simon
4 wesley
5 nikesh
8 sarah
1 jenny
ファイル2:
3 casey
8 jenny
1 alan
1 jessie
5 gordon
9 bill
1 sue
ファイル3
4 jack
2 jenny
6 wesley
8 sarah
6 gordon
1 derek
6 sue
1 jessie
2 pritesh
7 bill
希望の出力
ファイル1
2 user1
4 user2
5 user3
8 user4
1 user5
ファイル2:
3 user6
8 user5
1 user7
1 user8
5 user9
9 user10
1 user11
ファイル3
4 user12
2 user5
6 user2
8 user4
6 user9
1 user13
6 user11
1 user8
2 user14
7 user10
私が試したこと
解決策に配列が含まれていることを願っていますが、この問題で問題が発生しています。
ベストアンサー1
次のようなことができます
awk '!($2 in a){a[$2] = "user"(++n)} {$2 = a[$2]; print > (FILENAME".anon")}' file1 file2 file3
keyが
$2
arrayにない場合はa
追加され、valueはuser
文字列とプレフィックス増加変数の連結です。++n
値を
$2
配列の対応する値に変更a
し、現在のファイル名とサフィックスを関連付けた名前の新しいファイルに結果を印刷します。