私はjavascriptコードを「難読化」しようとしています(著作権侵害を避けるために判読不能にします)これを行うためにawkを使用しています。これは長い単語ではうまく機能しますが、単一の文字の単語では機能しません。
入力テキスト :
var t=document.getElementById(u)
期待される出力:
var b7=document.getElementById(b8)
実際の出力:
var b7 document getElementById b8
AWKコード:
${cor_var} is a unix variable which contains "t" in our example
${obf_var} is a unix variable which contains "b7" (the obfuscated variable)
awk -v AWK_COR_VAR="${cor_var}" -v AWK_OBF_VAR="${obf_var}" '
      # We use Non-word characters as field separator
      # Like this we can extract var/func
      BEGIN {FS="[^A-Za-z0-9_]+"}
      {
        if ($0 ~ AWK_COR_VAR) {
          # On a line containing our word, we go through each field till we find our word
          # and then we replace it with sub
          for ( x = 1; x < NF; x++ ) {
            # Output fields with space as delimiter
            if ($x == AWK_COR_VAR) {sub($x, AWK_OBF_VAR, $x)};
          }
          print $0;
        } else {print $0}
      }' $file
サブ関数がフィールドセパレータを取り除いたようです。また、フィールドセパレータを保持する3番目の引数なしでsubを試しましたが、「t」を変更してはいけない場所も変更しました。
if ($x == AWK_COR_VAR) {sub($x, AWK_OBF_VAR)};
出力:
b7=documenb7.getElementById(t)