辞書 Dictionary.txt と入力ファイル inFile.txt があります。辞書は可能な翻訳について教えてくれます。UNIXシェルでの同様の問題の解決策:辞書による置換は、ここでは完全には理解できないものをハードコードしているようです。辞書よりも優れた置換手法を考え出すことができますが、AWK/Sed スクリプトは複数のファイルを読み取ることができるはずです。最も単純なケースでは、1 つの辞書ファイルと 1 つの infile のみです。
辞書をAWKまたはSedでエレガントに置き換えるには?
例
Dictionary.txt
1 one 2 two 3 three four fyra five fem
inFile.txt
one 1 hello hallo 2 three hallo five five
コマンドからの出力、次のようなコマンドを求めています
awk/sed {} Dictionary.txt inFile.txt
one one hello hallo two three hallo fem fem
置換を具体的に選択したが、1 対 1 の置換が機能しない AWK の例。
awk 'BEGIN { lvl[1] = "one" lvl[2] = "two" lvl[3] = "three" # TODO: this does not work # lvl[four] = "fyra" # lvl[five] = "fem" # lvl[one] = "one" # lvl["hello"] = "hello" # lvl[hallo] = "hallo" # lvl[three] = "three" } NR == FNR { evt[$1] = $2; next } { print $1, evt[$2], $3, $4, evt[$5], $6, $7, evt[$8], evt[$9] #TODO: this dos not work, eg. one-one mapping # print evt[$1], evt[$2], evt[$3], evt[$4], evt[$5], evt[$6], evt[$7], evt[$8], evt[$9] }' dictionary.txt infile.txt