Text einfügen in erste oder zweite Zeile eines Baumes

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von fertchen, 14.06.2010.

  1. #1 fertchen, 14.06.2010
    Zuletzt bearbeitet: 17.06.2010
    fertchen

    fertchen Grünschnabel

    Dabei seit:
    24.05.2010
    Beiträge:
    9
    Zustimmungen:
    0
    Hallo Community. Ich habe hier ein langes halbfertiges Script. Dies soll ein Header in die ERSTE ZEILE einfügen, aber nur wenn in der ersten Zeile kein #! steht. Wenn dort #! steht, dann soll der HEader in die zweite ZEile eingefügt werden. Ich weiss nicht weiter. Vielleicht hat ja jemand eine Idee, wie man das Script lauffähig machen kann. Es fehlt die Baumauswahl, also aus welchem Baum sollen txt Dateien verändert werden. Danke
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 aspire_5652, 14.06.2010
    Zuletzt bearbeitet: 14.06.2010
    aspire_5652

    aspire_5652 Tripel-As

    Dabei seit:
    02.01.2008
    Beiträge:
    198
    Zustimmungen:
    0
    ungetestet:

    (unter der Annahme du verwendest bash und GNU sed)
    Code:
    #!/bin/bash
    
    for file in $(find /path/to/dir -type f)
    do
    	head -n 1 $file | egrep '^#!'
    	if [ $? -eq 0 ]
    	then
    		sed -i '2i\inserted text' $file
    	else
    done
    Achso, das nächste mal bitte CODE-Tags benutzen!
     
  4. HBtux

    HBtux Linuxer

    Dabei seit:
    13.04.2010
    Beiträge:
    72
    Zustimmungen:
    0
    Ort:
    $HOME
    hätte so auch nicht funktioniert.... :)

    Spass beiseite...
    In Deinem Code ist die else-Klausel unvollständig....

    Ich habe mir einfach mal erlaubt, den Code zu verfollständigen....
    Code:
    [FONT="Courier New"]#!/bin/bash
    
    for file in $(find /path/to/dir -type f)
    do
    	head -n 1 $file | egrep '^#!'
    	if [ $? -eq 0 ]
    	then
    		sed -i '2i\inserted text' $file
    	else
    [B]		sed -i '1i\inserted text' $file
    	fi[/B]
    done[/FONT]
    
     
  5. #4 fertchen, 17.06.2010
    fertchen

    fertchen Grünschnabel

    Dabei seit:
    24.05.2010
    Beiträge:
    9
    Zustimmungen:
    0
    so gehts, nur noch Abfragen ob Header schon besteht

    , dann keinen neuen Header einfügen.

    Wo genau muss das hier rein. Also erst lesen ob der Header vorhanden ist, dann in diesen Dateien, wenn vorhanden, keinen Header schreiben.

    Vielen Dank an alle
     
  6. HBtux

    HBtux Linuxer

    Dabei seit:
    13.04.2010
    Beiträge:
    72
    Zustimmungen:
    0
    Ort:
    $HOME
    ist noch was unklar....?
    War das eine neue Frage von Dir?
     
  7. #6 fertchen, 17.06.2010
    fertchen

    fertchen Grünschnabel

    Dabei seit:
    24.05.2010
    Beiträge:
    9
    Zustimmungen:
    0
    Nur noch abfragen, ob der Header schon existiert

    Hallo. Danke für die Hilfe. Ja, ich habe noch eine (wahrscheinlich eher 100) Frage(n). Also ich möchte, dass das Script, bevor der Header reingeschrieben wird, prüft, ob sich nicht bereits der Header in den Dateien befindet. Findet es den Header, soll kein neuer Header geschrieben werden. Findet er es nicht, dann Header schreiben...

    Beste Grüsse und schonmal vielen Dank,
     
  8. HBtux

    HBtux Linuxer

    Dabei seit:
    13.04.2010
    Beiträge:
    72
    Zustimmungen:
    0
    Ort:
    $HOME
    hast Du den Code weiter oben überhaupt schon mal getestet.
    Der Code prüft ob die erste Zeile mit "#!" beginnt.

    In Abhängigkeit von dem Ergebnis wird in der ersten oder zweiten Zeile der entsprechende Text eingefügt...!
     
  9. #8 fertchen, 17.06.2010
    fertchen

    fertchen Grünschnabel

    Dabei seit:
    24.05.2010
    Beiträge:
    9
    Zustimmungen:
    0
    Hallo. Ja klar habe ich den Code getestet. Nur trägt er bei mehrfachausführung halt nochmal eine Zeile mit dem inserted text ein. das sieht dann halt so aus
    #! blabla
    inserted text
    inserted text
    oder
    blabla
    #! blabla
    inserted text
    inserted text
    ich will, das er nachschaut, ob bereits inserted text vorhanden ist im head, und nur dann inserted text einträgt, wenn nicht...
     
  10. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  11. HBtux

    HBtux Linuxer

    Dabei seit:
    13.04.2010
    Beiträge:
    72
    Zustimmungen:
    0
    Ort:
    $HOME
    so sollte es aber jetzt passen....

    Unterhalb von else habe ich zwei verschiedene sed-Zeilen vorbereitet.
    Wahlweise kannst Du nur "inserted text" oder auch noch "#! blabla" mit einfügen lassen.

    Den Suchpfad und das Dateimuster musst Du noch für Deine Anwendung anpassen.
    Bitte vorerst mal mit Test-Daten probieren.
    Code:
    [FONT="Courier New"]#!/bin/bash
    
    for file in $(grep -L "inserted text" [B]/tmp/test/test*.txt[/B])
    do
            head -n 1 $file | egrep '^#!' >/dev/null 2>&1
            if [ $? -eq 0 ]
            then
                    echo "$file: inserted text in Zeile 2 eingefügt"
                    sed -i '2i\inserted text' $file
            else
                    echo "$file: inserted text in Zeile 1 eingefügt"
                    # fügt "inserted text in Zeile 1 ein
                    sed -i '1i\inserted text' $file
    
                    # fügt "#! blabla"in Zeile 1 und "inserted text in Zeile 2 ein
                    #sed -i '1i\#! blabla\ninserted text' $file
            fi
    done[/FONT]
    
     
  12. #10 fertchen, 21.06.2010
    fertchen

    fertchen Grünschnabel

    Dabei seit:
    24.05.2010
    Beiträge:
    9
    Zustimmungen:
    0
    es geht

    Vielen Dank für deine Geduld und deine Motivation. Der Code funktioniert. Leider nur für den Ordner der im Pfad steht. Wie kann ich den Code denn auf einen Baum, also Unterordner, anwenden.

    Besten Dank
     
Thema:

Text einfügen in erste oder zweite Zeile eines Baumes

Die Seite wird geladen...

Text einfügen in erste oder zweite Zeile eines Baumes - Ähnliche Themen

  1. "Textbaustein" in Text einfügen

    "Textbaustein" in Text einfügen: Hallo Leute, ich habe folgendes Problem: Ich habe eine Musterdatei.txt in der sich Platzhalter befinden, wie z.b: {produkte}. Es gibt eine...
  2. Nach jedem match (regex) eine zusätzliche Zeile mit Text einfügen

    Nach jedem match (regex) eine zusätzliche Zeile mit Text einfügen: Hallo, wie fügt man (mittels sed / awk / perl) nach jedem matching String eine Zeile mit Text ein? Hintergrund: Ich habe eine...
  3. Stelle in Datei suchen und Text einfügen

    Stelle in Datei suchen und Text einfügen: ich muss hier ne shell programmieren die in einer Datei diese Textstelle sucht # fuer video bei mMT (big video) # Aufruf startet das...
  4. Kontextmenü mit einem Skript verbinden

    Kontextmenü mit einem Skript verbinden: Abend, wenn ich z. B. eine simple Umwandlung eines Bildformates in ein anderes über das KDE-Kontextmenü (Servicemenü nennt es sich im KDE oder...
  5. Timestamp an Inhalt einer Textdatei anfügen

    Timestamp an Inhalt einer Textdatei anfügen: Hallo, ich als neuer, unerfahrener Nutzer von Linux und der bash hätte folgende Frage. Und zwar würde ich gerne mit einem command den Zeitstempel...