Shell 脚本解析 HTML <meta> 标签

3 阅读1分钟
  • 动机:在整理 HTML 页面时,我希望快速核对页面里的元信息( 标签),但常规的 grep/sed 很难处理多行或复杂属性。最终我写了一个 Perl 驱动的 Shell 脚本 src/sh/print_meta.sh,保证解析可靠且依赖少。

  • 脚本核心:读取目标 HTML,逐个匹配 ,再把每个标签的所有属性和值拼成可读输出,最后统计数量。

  • 使用方法:

  1. 赋权:chmod +x src/sh/print_meta.sh

  2. 运行:./src/sh/print_meta.sh /path/to/page.html

    #!/bin/sh# 打印指定 HTML 文件中的所有 meta 标签属性set -euo pipefailif [ # -ne 1 ]; then echo "用法: 0 /path/to/file.html" >&2 exit 1fiFILE="1"if[!f"1"if [ ! -f "FILE" ]; then echo "文件不存在: FILE" >&2 exit 1fiperl -0777 -ne ' use strict; use warnings; my content = ;my_; my index = 0; while (content =~ /<meta\b([^>]*)>/gi) { my attrs = 1//q;my@pairs;while(1 // q{}; my @pairs; while (attrs =~ /([a-zA-Z0-9:_-]+)\s*=\s*(?:"([^"])"|'''([^'''])'''|([^\s"'''=<>`]+))/g) { my value=definedvalue = defined 2 ? 2:defined2 : defined 3 ? 3:3 : 4; push @pairs, "1=1=value"; } if (@pairs) { print "meta[index]: ", join(", ", @pairs), "\n"; } else { print "meta[index]: (无属性)\n"; } index++; } print "共找到 index 个 meta 标签\n";' "$FILE"