40 lines
1.1 KiB
Bash
Executable file
40 lines
1.1 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# Variablen definieren
|
|
INPUT_FILE=$1
|
|
OUTPUT_FILE=$2
|
|
SPACES_PER_LEVEL=4
|
|
LIST_INDENTATION=2
|
|
HEADER_LEVELS=3
|
|
|
|
sed 's/\t/ /g' "$INPUT_FILE" > temp_processed.txt
|
|
|
|
awk -v spaces_per_level=$SPACES_PER_LEVEL -v list_indentation=$LIST_INDENTATION -v header_levels=$HEADER_LEVELS '
|
|
{
|
|
match($0, /^ */)
|
|
total_spaces = RLENGTH
|
|
level = int(total_spaces / spaces_per_level)
|
|
|
|
# Überschriften (bis zur angegebenen Ebene)
|
|
if (level <= header_levels) {
|
|
hashtags = ""
|
|
for (i = 0; i <= level; i++) {
|
|
hashtags = hashtags "#"
|
|
}
|
|
$0 = hashtags " " substr($0, total_spaces + 1)
|
|
}
|
|
# Listen (ab der nächsten Ebene)
|
|
else {
|
|
list_level = level - header_levels - 1
|
|
# Anpassung der Einrückung basierend auf LIST_INDENTATION
|
|
adjusted_indent = ""
|
|
for (i = 0; i < list_indentation * list_level; i++) {
|
|
adjusted_indent = adjusted_indent " "
|
|
}
|
|
$0 = adjusted_indent "- " substr($0, total_spaces + 1)
|
|
}
|
|
|
|
print
|
|
}' temp_processed.txt > "$OUTPUT_FILE"
|
|
|
|
rm temp_processed.txt
|