私は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)