globbing, sed или awk html-файлы

Я хотел создать скрипт, который я мог бы проверить .xhtml файлы для изображений и при необходимости добавить альт-теги. Во время поиска я нашел регулярные выражения и сделал 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="" если не 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="" нет имени записи перед типом файла и вставить в ""

  • Получить данные строки для несоответствующих значений столбца
  • Использование sed для выравнивания текста, начиная с шаблона и заканчивая строкой
  • Помощь с sed - удаление определенных строк с определенной строкой
  • Sed, Awk Multiline log file, число {0-999] идентифицирует отношение
  • Escape regex sed (1 строчный регистр, 1 верхний регистр, 1 символ, 1 номер) для bash
  • Поиск и замена последовательности внутри скобки
  • Удаление файлов, если содержимое не соответствует шаблону
  • Добавить что-то в каждый список в файле
  • One Solution collect form web for “globbing, sed или awk html-файлы”

    Один из способов использования 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 
    Linux и Unix - лучшая ОС в мире.