AWK スクリプトで ASCII 文字を ASCII HEX に変換するにはどうすればよいですか?
文字の範囲でループしたい
例
for(i="a"; i<"g"; i++)
print i;
注: 16 進表現の範囲でループし、文字を印刷します。
答え1
私には、本当に必要ないように思えます全てキャラクター...
$ awk 'BEGIN { chartable="abcdefghij" ; for (i=index(chartable, "a"); i<index(chartable, "g"); i++) { print substr(chartable, i, 1) } }'
a
b
c
d
e
f
答え2
すべての ASCII 文字を含むテーブルを作成し、awk 組み込みを使用してindex()
テーブル内の文字を検索します。次に、 を使用してsprintf()
、返された 10 進数値をindex()
16 進数値に変換します。
BEGIN {
for (i = 0; i < 128; i++) {
table = sprintf("%s%c", table, i);
}
}
function chartohex (char) {
return sprintf("0x%x", index(table, char));
}
END { # examples
print chartohex("a");
print chartohex("A");
print chartohex("!");
}
このコードをファイル「foo」に入れて実行するawk -f foo < /dev/null
と、「a」、「A」、「!」の ASCII 値が 16 進数で表示されます。
答え3
awk には、Python のような ord()、chr() 関数はありません。まず、インデックスが ASCII 文字で値が 10 進数である配列を BEGIN ブロック内に作成する必要があります。
awk 'BEGIN {
for (i = 0; i <= 255; i++) {
t = sprintf("%c", i)
a[t] = i
}
for( i=a["a"]; i < a["g"]; i++)
print sprintf("%c",i)
}'
a
b
c
d
e
f