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