ワイルドカード、sed、または awk html ファイル

ワイルドカード、sed、または awk html ファイル

.xhtmlファイルの画像を確認し、必要に応じてAltタグを追加できるスクリプトを作成したいと思います。検索中に正規表現を見つけて誘惑しましたが、どこで何を検索するのかglobわかりません。以下を行うための最良のオプションは何ですか?awksed

<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パーサーの助けを借りてこれを使用する1つの方法は次のとおりです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

関連情報