次の形式の csv ファイルがあります。
23:56:00,5,1,7,99,100,101
23:56:30,5,1,7,98,199,191
23:57:00,6,1,6,99,99,98
23:57:30,5,2,6,97,99,199
...
また、次の形式のマップ ファイル:
1:10
2:12
3:30
4:aa
5:16
6:11
7:bb
私が達成しようとしているのは、最初の csv ファイルの列 2、3、および 4 のフィールドを、マップ ファイルでマップされる値に置き換えることです。
たとえば、上記の場合、私が望む最終的な出力は次のとおりです。
23:56:00,16,10,bb,99,100,101
23:56:30,16,10,bb,98,199,191
23:57:00,11,10,11,99,99,98
23:57:30,16,12,11,97,99,199
これを行う最良の方法は何ですか?awk/sed を使用して方法を見つけようとしていましたが、awk 内の複数のファイルにアクセスする方法がわかりません。それが最善の方法であるかどうかもわかりません。ファイルが大きいので何度も繰り返すことになるので、毎回マッピングをチェックするのは正しい方法ではないと思います。
マップをシェル スクリプト内のハッシュ テーブルに格納し、ハッシュ マッピングを使用して置き換える方法はありますか?