Einleitung
Durch die Migration weg von Wordpress und das Ausprobieren von diversen Flat-File Blog Systemen wie Hugo und Pelican habe ich ein paar Scripte angesammelt, die vielleicht jemand anderem noch von Nutzen sein können.
Ersetzen von Pfaden
Dieses Script war gedacht, um vom Wordpress Export, der im reStructuredText Format vorlag, in eine Markdown Syntax umzuwandeln.
Das sind die Notizen
- find -type f -exec sed -i 's/mysql5.service/localhost/g' {} \;
- wp\-content\/uploads\/sites\/2\/202[0-9]/[0-9][0-9]
- content\/2024\/img
Der Befehl
Und mit diesem Befehl habe ich die Dateien beziehungsweise deren Inhalt umgewandelt.
find -type f -exec sed -i 's/wp\-content\/uploads\/sites\/2\/20\([0-9][0-9]\)\/\([0-9][0-9]\)/content\/2023\/img/g' {} \;
Zeilenumbrüche im Kopf entfernen
Das Problem
Die Kopfinformationen sind etwas auseinander gerissen und funktionieren für das Kompilieren nicht, daher müssen diese wieder zusammengeführt werden. Sieht außerdem schöner aus.
title: Audiospuren aus Videodateien entfernen und hinzufügen - ffmpeg
date
: 2020-05-16 09:14
author
: hoergen
category
: Linux, Programme
tags
: audio, ffmpeg, Linux, Tools, video
slug
: audiospuren-aus-videodateien-entfernen-und-hinzufuegen-ffmpeg
status
: published
Die Lösung - Script
Am Ende des sed Befehls wurde das g weg gelassen, da der Ausdruck nur beim ersten Auffinden in einer Datei geändert werden soll. Ein etwaiges späteres Auftauchen dieser Kombination ist 100%ig eine Beschreibung im Artikel.
#!/bin/bash
# author: hoergen
# last edited: 2026-06-08
# remove newline after title, remove 2 newlines after date
find -type f -name "*.md" -exec echo {} \; -exec sed -i 'N;s/^\ndate/date/;P;D' {} \; -exec sed -i 'N;s/^date\n/date/;P;D' {} \; -exec sed -i 'N;s/^date\n/date/;P;D' {} \;
# author
find -type f -exec sed -i 'N;s/^\nauthor/author/;P;D' {} \; -exec sed -i 'N;s/^author\n/author/;P;D' {} \; -exec sed -i 'N;s/^author\n/author/;P;D' {} \;
# category
find -type f -exec sed -i 'N;s/^\ncategory/category/;P;D' {} \; -exec sed -i 'N;s/^category\n/category/;P;D' {} \; -exec sed -i 'N;s/^category\n/category/;P;D' {} \;
# tags
find -type f -exec sed -i 'N;s/^\ntags/tags/;P;D' {} \; -exec sed -i 'N;s/^tags\n/tags/;P;D' {} \; -exec sed -i 'N;s/^tags\n/tags/;P;D' {} \;
# slug
find -type f -exec sed -i 'N;s/^\nslug/slug/;P;D' {} \; -exec sed -i 'N;s/^slug\n/slug/;P;D' {} \; -exec sed -i 'N;s/^slug\n/slug/;P;D' {} \;
# status
find -type f -exec sed -i 'N;s/^\nstatus/status/;P;D' {} \; -exec sed -i 'N;s/^status\n/status/;P;D' {} \; -exec sed -i 'N;s/^status\n/status/;P;D' {} \;
# attachments in multiple lines
find -type f -exec sed -i 'N;s/^\nattachments/attachments/;P;D' {} \; -exec sed -i 'N;s/^attachments\n/attachments/;P;D' {} \; -exec sed -i 'N;s/^attachments\n/attachments/;P;D' {} \; -exec sed -i ':a; N; /\,\n/ { s/\,\n/\, /; ba }; P; D' {} \;
# Remove 2 or more spaces with g global selector for all
find -type f -exec sed -i 's/ \{2,\}/ /g' {} \;