shell-scripte-code/convert_to_markdown-bash.sh

40 lines
1,003 B
Bash
Raw Permalink Normal View History

2025-02-13 18:08:18 +01:00
#!/bin/bash
# Konfiguration
INPUT_FILE=$1
OUTPUT_FILE=$2
SPACES_PER_LEVEL=4
LIST_INDENTATION=2
HEADER_LEVELS=3
2025-02-13 18:08:18 +01:00
# Tabs zu Leerzeichen konvertieren
2025-02-13 18:08:18 +01:00
sed 's/\t/ /g' "$INPUT_FILE" > temp_processed.txt
# Ausgabedatei leeren
> "$OUTPUT_FILE"
# Verarbeitung jeder Zeile
2025-02-13 18:08:18 +01:00
while IFS= read -r line; do
# Führende Leerzeichen ermitteln
leading_spaces=${line%%[! ]*}
total_spaces=${#leading_spaces}
2025-02-13 18:08:18 +01:00
# Ebene berechnen
level=$((total_spaces / SPACES_PER_LEVEL))
content="${line:total_spaces}"
2025-02-13 18:08:18 +01:00
if (( level <= HEADER_LEVELS )); then
# Überschriften formatieren
hashtags=$(printf "%0.s#" $(seq 0 $level))
echo "${hashtags} ${content}" >> "$OUTPUT_FILE"
2025-02-13 18:08:18 +01:00
else
# Listen formatieren
list_level=$((level - HEADER_LEVELS - 1))
indent=$(printf "%*s" $((LIST_INDENTATION * list_level)) "")
echo "${indent}- ${content}" >> "$OUTPUT_FILE"
2025-02-13 18:08:18 +01:00
fi
done < temp_processed.txt
2025-02-13 18:08:18 +01:00
# Temporäre Datei aufräumen
2025-02-13 18:08:18 +01:00
rm temp_processed.txt