通配符、sed 或 awk html 文件

通配符、sed 或 awk html 文件

我想创建一个脚本,可以检查.xhtml文件中的图像并根据需要添加 alt 标签。在搜索时,我发现了正则表达式并进行了 man on,glob但我不确定在awk和中搜索的位置或内容sed。执行以下操作的最佳选择是什么:

<img class="something" width="something" height="something" src="folder/folder/image.png" />

<img id="something" src="folder/folder/file.png" />

我想要所需的脚本来检测是否alt=""存在(如果不更改文件名)。

结束所需的格式:

<img class="something" width="something" height="something" src="folder/folder/image.png" alt="image"/>

<img id="something" src="folder/folder/file.png" alt="file"/>

我知道这是可以做到的,但我不知道在哪里可以读到它。

  • 找到<img结尾/>
  • img标签内检测alt=""
  • 如果alt=""文件类型之前不存在记录名称并插入""

答案1

perl在解析器的帮助下使用的一种方法XML::Twig

#!/usr/bin/env perl

use strict;
use warnings;
use XML::Twig;
use File::Spec;

my $twig = XML::Twig->new(
    twig_handlers => {

        ## For each 'img' tag execute following function...
        'img' => sub {

            ## If it doesn't have an 'alt' attribute...
            if ( ! $_->att_exists( 'alt' ) ) { 

                ## Get value of 'src' tag.
                my $src = $_->att( 'src' );
                return unless $src;

                ## Get last part of the path and remove extension.
                my $src_file = (File::Spec->splitpath( $src ))[2] || q{};
                $src_file =~ s/\.[^.]+$//;

                ## Create the 'alt' attribute.
                $_->set_att( 'alt', $src_file );
            }   
        }   
    },  
    pretty_print => 'indented',
)->parsefile( shift )->print;

使用您的xml文件作为唯一参数运行它,例如:

perl script.pl xmlfile

相关内容