mk_eaw_tbl.awk
来自「PHP v6.0 For Linux 运行环境:Win9X/ WinME/ Wi」· AWK 代码 · 共 81 行
AWK
81 行
#!/usr/bin/awk -f## $Id: mk_eaw_tbl.awk,v 1.2 2005/02/20 22:18:08 moriyoshi Exp $## Description: a script to generate east asian width table.#BEGIN { prev = -1 comma = 0 ORS = "" FS = "[;.|# ]" print "static const struct {\n\tint begin;\n\tint end;\n} " TABLE_NAME "[] = {\n\t"}/^#/ {}/^[0-9a-fA-F]+;/ { if ($2 == "W" || $2 == "F") { v = ( "0x" $1 ) + 0 if (prev < 0) { first = v } else if (v - prev > 1) { if (comma) { print ",\n\t" } printf("{ 0x%04x, 0x%04x }", first, prev) first = v comma = 1 } prev = v } else { if (prev >= 0) { if (comma) { print ",\n\t" } printf("{ 0x%04x, 0x%04x }", first, prev) prev = -1 comma = 1 } }}/^[0-9a-fA-F]+\.\./ { if ($4 == "W" || $4 == "F") { vs = ( "0x" $1 ) + 0 ve = ( "0x" $3 ) + 0 if (prev < 0) { first = vs } else if (vs - prev > 1) { if (comma) { print ",\n\t" } printf("{ 0x%04x, 0x%04x }", first, prev) first = vs comma = 1 } prev = ve } else { if (prev >= 0) { if (comma) { print ",\n\t" } printf("{ 0x%04x, 0x%04x }", first, prev) prev = -1 comma = 1 } }}END { if (prev >= 0) { if (comma) { print ",\n\t" } printf("{ 0x%04x, 0x%04x }", first, prev) } print "\n};\n"}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?