|
楼主 |
发表于 2003-7-22 21:17:56
|
显示全部楼层
penny兄的方法也不错呀...
but... 如果文件是在mac/windows下写的就完蛋了... ;)
DOS格式文件行尾是“\r”, MAC文档则根本不用"\n"直接用"\r"来换行(tr/sed好象会把整个MAC文档当做一行来处理)
另外,几位大兄都只考虑了从一行代码中提取gb2312的问题
这也是我一开始要用 tr 原因
因为html文件不要求<>在一行内完成
比如- <META http-equiv=Content-Type
- content="text/html;
- charset=gb2312">
复制代码
HOWTO文档中这样的文件比较多,不过中文的文档都很正规 ~_~
这就需要先按html语法重新组合语句,再sed...
而且对于sed -e 's/\ //g'这种简单字符替换,改用tr -d " "会比较清晰
现在偶的程序是这个样子
- #!/bin/sh
-
- HTML_CHARSET=$(head -15 $1 | tr -d "[\r\n]" | tr ">" "\n" | tr "[A-Z]" "[a-z]" \
- | sed -ne 's/\(.*meta.*content.*charset[[:space:]]*=[[:space:]]*\)\(.*\)\(".*\)/\2/p')
- if [ -z $HTML_CHARSET ] ; then
- HTML_CHARSET=iso-8859-1
- fi
- echo "$HTML_CHARSET"
复制代码
偶电脑里所有的非英文HTML文档都可正确识别了
还是在解决实际问题时学东西比较快
谢谢各位 |
|