와일드카드, 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파서의 도움으로 이를 사용하는 한 가지 방법은 다음과 같습니다 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

관련 정보