使用regex或bash命令从模板(html)文件获取所有模板变量的唯一列表

使用regex或bash命令从模板(html)文件获取所有模板变量的唯一列表,regex,bash,templates,Regex,Bash,Templates,我有html模板,我想得到所有模板变量的列表,如: <li>User ID <!--{ID}--></li> 用户ID 是一个模板变量 编辑: 执行此操作的正则表达式模式是: \<\!--\{(.*?)\}--\> \ 我只需要捕捉任何变量的唯一出现,例如,Perl的模板中可能多次出现: perl -lne '{ while (/<!--{(.*?)}-->/g) {$t{$1}++} } END{ pri

我有html模板,我想得到所有模板变量的列表,如:

<li>User ID <!--{ID}--></li> 
  • 用户ID
  • 是一个模板变量

    编辑: 执行此操作的正则表达式模式是:

    \<\!--\{(.*?)\}--\>
    
    \
    
    我只需要捕捉任何变量的唯一出现,例如,Perl的模板中可能多次出现

    perl -lne '{ while (/<!--{(.*?)}-->/g) {$t{$1}++}  } 
            END{ print for keys %t }' input.html
    
    perl-lne'{while(//g){$t{$1}++}
    结束{print for keys%t}'input.html
    
    使用更少的Perl语句:

    perl -lpe '{s/.*?(<!--{[^}]*}-->)/\1\n/g}' input | \
            grep '<!--{' | sort | uniq
    
    perl-lpe'{s/*?()/\1\n/g}'input|\
    grep'
    ack-o'\'input.html | uniq-c
    
    您是否尝试将输出管道化到
    sort-u
    ?@Jaypal我没有尝试使用bash。Regex(使用php)工作正常,但现在我需要找到唯一的实例。是否建议使用Regex替代方案?。感谢bash命令的完美。一行中有多个模板参数吗?那么,使用sed和简单的正则表达式是不可能的,我将使用perl one-liner。您的第一个命令完美地返回了唯一的变量列表,但我还需要在php中使用正则表达式版本,例如使用preg_match_all(),我接受你的第一个命令。Thanks@sakhunzai我会建议使用
    grep-oP
    ,但是mac上的
    grep
    不支持基于
    perl
    的正则表达式。
    ack -o '\<\!--\{(.*?)\}--\>' input.html | uniq -c