Выбор шаблона из файлов и копирование его в другой файл в соответствующем месте - PullRequest
0 голосов
/ 11 января 2020

Я был бы очень признателен за помощь по следующей проблеме: По сути, я хочу скопировать указанный шаблон c (заголовок HTML страниц, в данном случае помеченный <h2>TITLE</h2>) в индекс. Этот индекс содержит ссылки на отсканированные файлы, чьи имена пронумерованы. В частности, я хочу, чтобы индекс показывал не только ссылки на файлы, названные их номерами (например, 1. html), но и заголовок, например, «1 - Theory of Everything. * 1039». * ". Заголовок - это то, что установлено в файлах, и этот шаблон не меняется (не у каждого файла есть заголовок, поэтому в каждом файле нужно искать теги в al oop или что-то в этом роде.

Позвольте привести несколько примеров:

Пример одного из отсканированных файлов контента:

1. html контент:

text
 <h2 id="theory-of-everything">Theory of Everything</h2>
text

2. html content:

text
 <h2 id="other-theory">Other Theory</h2>
text

Для выбора названий в вышеприведенном примере я уже получил несколько неуклюжий (но работающий) для l oop setup:

for i in *.html; do cat "$i" | grep "<h2" | grep -oP '(?<=\"\>).*(?=\<)' ; done

The вывод этого, правильно:

Теория всего

Другая теория

Однако теперь я не знаю больше. Мне нужно поместить эти заголовки всех html файлов в индекс. html, который до сих пор выглядит следующим образом: 1. 1. 1046 * и 2. html Я бы сослался на следующее (извлечение из индекса. html):

<p><a href="#1">1</a></p>
<p><a href="#2">2</a></p>

(т. Е. 1. html становится # 1, так как позже он интегрируется в другой контейнер с элементом iframe, содержащим всю ссылку на 1. html). Выше показано, как сейчас выглядят ссылки на индексы. Теперь вместо того, чтобы отображать только «1» или «2» в качестве заголовка для ссылки / файла, я хочу добавить вышеуказанный выбранный заголовок, как в:

1 - Theory of Everything

2 - Другая теория

Таким образом, часть HTML должна была бы стать:

<p><a href="#1">1 - Theory of Everything</a></p>
<p><a href="#2">2 - Theory of Everything</a></p>

К сожалению, я понятия не имею, как вставить выбранный шаблон (заголовки) в для l oop до нужной строки и поместите в указатель. html. Или, если для l oop это даже правильный подход к тому, что я хочу сделать. Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 11 января 2020

Это то, что вы пытаетесь сделать (используя GNU awk для gensub () и 3-й аргумент для сравнения ()):

awk '
    FNR==1 { nr=gensub(/\..*/,"",1,FILENAME) }
    match($0,/id="[^"]+">(.*)</,a) { printf "<p><a href=\"#%d\">%d - %s</a></p>\n", nr, nr, a[1] }
' *.html
<p><a href="#1">1 - Theory of Everything</a></p>
<p><a href="#2">2 - Other Theory</a></p>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...