You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWK中switch case无法匹配*.html文件名的正确写法咨询

问题解决:awk中用switch匹配带路径的HTML文件名

你的核心问题在于不了解awk switch语句的匹配规则:

  • 默认情况下,switch的case是精确字符串匹配,不是shell通配符或正则匹配
  • 你尝试的*.html、/*html/写法都不符合awk语法规范

正确写法(GNU awk 支持)

直接用正则匹配outfile是否以.html结尾,在case中使用~ /正则/的格式:

switch( outfile ){
    case ~/\.html$/ :
        doctype="application/xhtml+xml" ;
        break;
    default : ;
}

说明:

  • \.:转义正则中的.,避免匹配任意字符
  • $:锚定字符串结尾,确保匹配的是文件名后缀而非中间包含html的字符串

为什么之前的写法失败

  1. case *.html:只会匹配字面量字符串*.html,不会匹配实际的文件名(比如Text/content_001_One.html)
  2. case /*.html/:awk不支持这种直接写正则的case格式,必须结合~操作符声明正则匹配

兼容POSIX awk的写法(如果不能用GNU扩展)

如果你的环境只能用标准POSIX awk(不支持switch的正则case),可以先通过正则判断再赋值,效果和switch一致:

if (outfile ~ /\.html$/) {
    doctype="application/xhtml+xml"
}

内容的提问来源于stack exchange,提问作者Eric Marceau

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 02:32:44