Додайте тег <h1> з імені файлу на Linux


0

У мене є папка з купою HTML-файлів, і я хочу додати

<h1>Filename without extension</h1>

лінія відразу після <body> .

Як я можу піти, маючи сценарій або один лайнер

  1. Переглядайте кожен файл у папці
  2. Створіть тег H1 на основі імені файлу, але без розширення (наприклад: file named foobar.html отримав <h1>foobar</h1> лінія після <body> лінії
  3. Перезаписати файли

?


Яку мову / інструмент ви використовуєте? Чи є деякі параметри в <body> тег? Не могли б ви показати деякі витяги з файлів і очікуваний результат?
Toto

Деякі теги тіла в деяких файлах містять інший текст, наприклад lang = etc. Тег тіла з'являється один раз у кожному файлі.
To Do

Відповіді:


0

Ось невеликий perl-скрипт, який виконує завдання:

#!/usr/bin/perl
use strict;
use warnings;

# Retrieve all html files in an array
my @files = glob '*.html';
# "slurp" mode
undef $/;
# loop over all files
for my $file(@files) {
    # open file in read mode
    open my $fhi, '<', $file or die "Can't open '$file' for reading: $!";
    # retrieve content in a single string
    my $content = <$fhi>;
    close $fhi;
    # remove extension
    (my $without_ext = $file) =~ s/\.[^.]+$//; #/this is a comment for syntaxic color!
    # add h1 tag with filename
    $content =~ s~<body[^>]*>~$&\n<h1>$without_ext</h1>~s;
    # open same file in write mode
    open my $fho, '>', $file or die "Can't open '$file' for writing: $!";
    # write the modified string in the file
    print $fho $content;
}

Це буде працювати один файл за один раз. Я пояснив свою мету в оригінальному питанні.
To Do

@ToDo: Вибачте, це був лише тест. Див. Моє редагування, він працює для всіх html-файлів у каталозі
Toto

Хіба це не встановить лінію H1 на "назву"? Я хочу бути ідентичним імені файлу без .html
To Do

@ToDo: Дайте мені хвилину :)
Toto

Я зберегла скрипт в тій же папці, що й html-файли, і запустив його, але нічого не відбувається. Сценарій існує негайно.
To Do
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.