#!/bin/bash # 🐼 BashPanda Dojo - GrΓΌner GΓΌrtel πŸ’š # Lehrt: grep, regex, Pattern Matching # Schwierigkeit: Fortgeschritten SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source "${SCRIPT_DIR}/../../lib/waldwaechter.sh" cat << 'EOF' ╔═══════════════════════════════════════════════════════════╗ β•‘ β•‘ β•‘ 🐼 BASHPANDA DOJO - GRÜNER GÜRTEL πŸ’š β•‘ β•‘ β•‘ β•‘ "Muster erkennen ist der Weg zur Weisheit" β•‘ β•‘ β•‘ β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β• EOF echo "🐼 BashPanda nickt anerkennend. Du bist weit gekommen." echo "" cat << 'EOF' Der GrΓΌne GΓΌrtel lehrt dich MUSTERERKENNUNG. Du wirst lernen: 🎯 grep - Suchen in Dateien 🎯 Regular Expressions (Regex) - Die Sprache der Muster 🎯 grep -E - Extended Regex 🎯 Praktische Anwendungen: Email, Datum, IP-Adressen "Ein Meister sieht nicht nur was da ist, sondern erkennt das Muster." EOF read -p "➑️ Bereit fΓΌr Mustererkennung? (j/n): " start [[ ! "$start" =~ ^[jJyY]$ ]] && echo "🐼 Das Muster wartet." && exit 0 echo "" # === PHASE 1: grep Basics === cat << 'EOF' ═══════════════════════════════════════════════════════════ πŸ“š PHASE 1: grep - Die Suche beginnt ═══════════════════════════════════════════════════════════ grep durchsucht Text nach Mustern. Wie ein Adler, der Beute aus der Ferne erkennt. EOF echo "🐼 Demo: Testdatei erstellen" cat > /tmp/waldwaechter.txt << 'DEMO' Maya-Eule ist weise FunkFox rappt im Beat DumboSQL vergisst nie BashPanda lehrt Geduld Schnippsi stylt alles DEMO echo "" echo "Inhalt von waldwaechter.txt:" cat /tmp/waldwaechter.txt echo "" echo "πŸ₯‹ grep 'Fox' /tmp/waldwaechter.txt" grep 'Fox' /tmp/waldwaechter.txt echo "" echo "πŸ₯‹ grep -i 'bash' /tmp/waldwaechter.txt (case-insensitive)" grep -i 'bash' /tmp/waldwaechter.txt echo "" cat << 'EOF' πŸ’‘ grep Optionen: grep 'muster' datei Suche nach Muster grep -i 'muster' datei Ignore case grep -n 'muster' datei Zeige Zeilennummern grep -v 'muster' datei Invertiere (alles außer Muster) grep -c 'muster' datei ZΓ€hle Treffer grep -r 'muster' ordner/ Rekursiv in allen Dateien EOF # === PHASE 2: Regular Expressions === cat << 'EOF' ═══════════════════════════════════════════════════════════ πŸ“š PHASE 2: Regex - Die Sprache der Muster ═══════════════════════════════════════════════════════════ Regex ist wie die Geheimsprache der Textsuche. EOF echo "🐼 Regex Zeichen:" echo "" cat << 'EOF' ^ Zeilenanfang $ Zeilenende . Ein beliebiges Zeichen * 0 oder mehr Wiederholungen + 1 oder mehr Wiederholungen ? 0 oder 1 Wiederholung [abc] Eines der Zeichen a, b, c [0-9] Eine Ziffer [a-z] Ein Kleinbuchstabe EOF echo "πŸ₯‹ Beispiele:" echo "" echo "grep '^B' - Zeilen die mit B beginnen:" grep '^B' /tmp/waldwaechter.txt echo "" echo "grep 't$' - Zeilen die mit t enden:" grep 't$' /tmp/waldwaechter.txt echo "" # === PHASE 3: Email & Datum Erkennung === cat << 'EOF' ═══════════════════════════════════════════════════════════ πŸ“š PHASE 3: Praktische Muster - Email & Datum ═══════════════════════════════════════════════════════════ EOF echo "🐼 Email-Muster erkennen:" echo "" cat > /tmp/emails.txt << 'DEMO' max@beispiel.de test@web.com invalid@ not_an_email foo.bar@domain.co.uk DEMO echo "Emails in Datei:" cat /tmp/emails.txt echo "" echo "grep -E fΓΌr Extended Regex:" echo "Email-Pattern: ^[a-zA-Z]+@[a-zA-Z]+\.[a-zA-Z]+$" echo "" grep -E '^[a-zA-Z.]+@[a-zA-Z]+\.[a-zA-Z.]+$' /tmp/emails.txt echo "" cat << 'EOF' πŸ’‘ NΓΌtzliche Patterns: Email: ^[a-zA-Z.]+@[a-zA-Z]+\.[a-zA-Z.]+$ Datum: ^[0-9]{2}\.[0-9]{2}\.[0-9]{4}$ IP: ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ EOF # === GÜRTELPRÜFUNG === cat << 'EOF' ═══════════════════════════════════════════════════════════ πŸ₯‹ GÜRTELPRÜFUNG - GRÜNER GÜRTEL πŸ’š ═══════════════════════════════════════════════════════════ Erstelle 'email_finder.sh' das: 1. Nimmt einen Dateinamen als Parameter: $1 2. Sucht mit grep -E nach Email-Adressen 3. Nutzt Pattern: ^[[:alpha:]]+(\.[[:alpha:]]+)*@[[:alpha:]]+(\.[[:alpha:]]+)+$ 4. Zeigt alle gefundenen Emails an 5. Bonus: ZΓ€hlt sie mit wc -l Test-Datei erstellen: cat > emails_test.txt << 'END' maya@crumb.forest funkfox@beat.music invalid@ test@ dumbo@memory.database END ./email_finder.sh emails_test.txt EOF read -p "PrΓΌfung bestanden? (j/n): " pruefung if [[ "$pruefung" =~ ^[jJyY]$ ]]; then cat << 'EOF' ╔═══════════════════════════════════════════════════════════╗ β•‘ πŸŽ‰ AUSGEZEICHNET! πŸŽ‰ β•‘ β•‘ Du hast den GRÜNEN GÜRTEL πŸ’š verdient! β•‘ β•‘ β•‘ β•‘ "Wer Muster erkennt, erkennt die Ordnung im Chaos." β•‘ β•‘ β•‘ β•‘ - BashPanda 🐼 β•‘ β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β• EOF echo "πŸ₯‹ Gelernt:" echo " βœ… grep fΓΌr Textsuche" echo " βœ… Regular Expressions" echo " βœ… Email/Datum Pattern" echo " βœ… grep -E Extended Regex" echo "" echo "🎯 NΓ€chster GΓΌrtel: GELB πŸ’› (Prozesse & Funktionen)" else echo "🐼 'Muster brauchen Zeit zum Erkennen.'" fi echo "" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "πŸ’¬ bashpanda \"Wie funktioniert grep mit regex?\"" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"