- 论坛徽章:
- 1
|
刚写了下,应该是对的
- #!/usr/bin/awk -f
- /<[^>]+>/ {
- while (i = index($0, "<")) {
- sub(/^[^<]*</, "")
- t = substr($0, 1, 1)
- if (t == "/")
- sub(/^./, "")
- j = index($0, ">")
- if (j <= 0)
- next
- tag = substr($0, 1, j - 1)
- if (t == "/") {
- # print "/" tag
- oldcnt = cnt
- while (cnt > 0 && stack[cnt] != tag) {
- print lines[cnt] ":wrong tag: " stack[cnt]
- cnt--
- }
- if (cnt == 0) {
- print "wrong tag: /" tag
- cnt = oldcnt
- } else {
- cnt--
- }
- } else {
- stack[++cnt] = tag
- lines[cnt] = NR
- # print "-------"
- # for (k = 1; k <= cnt; ++k) {
- # print stack[k]
- # }
- }
- sub(/^[^>]*>/, "")
- }
- }
- END {
- # print "--------cnt is----" cnt
- for (; cnt > 0; cnt--) {
- print lines[cnt] ":wrong tag: " stack[cnt]
- }
- }
复制代码 |
|