Texte in einer Datei in einer bestimmten zeile einzufügen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von geist_der_foren, 25.06.2004.

  1. #1 geist_der_foren, 25.06.2004
    geist_der_foren

    geist_der_foren Grünschnabel

    Dabei seit:
    25.06.2004
    Beiträge:
    5
    Zustimmungen:
    0
    Hi @all,

    gibt es eine möglichkeit Texte in einer Datei in einer bestimmten zeile einzufügen ? Ich hab z.B. eine Datei mit folgenden layout:
    Code:
    #======================================
    # User alias specification   **ANFANG**
    #======================================
    
    
    # User Alias - TEST1
    # ------------------
    #
    User_Alias TEST1 = test_user1
    
    
    #======================================
    # User alias specification     **ENDE**
    #======================================
    In dieser Datei würde ich gerne noch folgendes einfügen:
    Code:
    # User Alias - TEST1
    # ------------------
    #
    User_Alias TEST1 = test_user1
    Am schluss soll die Datei folgender masen aussehen
    Code:
    #======================================
    # User alias specification   **ANFANG**
    #======================================
    
    
    # User Alias - TEST1
    # ------------------
    #
    User_Alias TEST1 = test_user1
    
    
    # User Alias - TEST2
    # ------------------
    #
    User_Alias TEST2 = test_user2
    
    
    #======================================
    # User alias specification     **ENDE**
    #======================================
    Hat jemand eine IDEE wie ich sowas für ein skript realisiren könnte ?
     
  2. Anzeige

    Schau dir mal diesen Ratgeber an. Viele Antworten inkl. passender Shell-Befehle!
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. hehejo

    hehejo blöder Purist

    Dabei seit:
    12.10.2003
    Beiträge:
    1.280
    Zustimmungen:
    0
    Ort:
    Stein (Mittelfranken)
    Idee

    Wie wäre es denn damit,
    du öffnest die Datei und liest eben solange ein, bis du deinen Header gefunden hast.
    Wenn es dir nicht auf die Reihenfolge ankommt, kannste dann ja etwas neues hinzufügen.

    Also Datei bis dahin in einen String. String um das Neue vergrößern. Rest der Datei an String ranhängen und den String dann komplett in die Datei schreiben.
     
  4. #3 geist_der_foren, 28.06.2004
    geist_der_foren

    geist_der_foren Grünschnabel

    Dabei seit:
    25.06.2004
    Beiträge:
    5
    Zustimmungen:
    0
    Als erstes danke für dein Post...

    Ich hab es mir folgender maßen vorgestellt, ich such mit diesem code di Zeilen nummer raus und Subtrahire 2 Zeilen, damit ich an der Zeile bin, in dem der Text eingefühgt werden soll
    Code:
    LINE=$(( $( awk '/^# User alias specification.*ENDE/{ print NR }' $FILE ) - 2 ))
    Dann würde ich mit dem sed an dier Zeile den Text einfügen
    Code:
    sed optionen 'zeile text' >> $FILE
    Aber leider bekomme ich das mit sed nicht gebacken ... hast du eine Anhung wie ich das lösen könnte ? :help:
     
  5. hehejo

    hehejo blöder Purist

    Dabei seit:
    12.10.2003
    Beiträge:
    1.280
    Zustimmungen:
    0
    Ort:
    Stein (Mittelfranken)
    Bof, sowas hab ich noch nicht gemacht.
    Aber warum willst du das mit SED reinschreiben?
     
  6. #5 geist_der_foren, 28.06.2004
    Zuletzt bearbeitet: 28.06.2004
    geist_der_foren

    geist_der_foren Grünschnabel

    Dabei seit:
    25.06.2004
    Beiträge:
    5
    Zustimmungen:
    0
    Warum ? Weil mir nicht besseres eingefallen ist ... :]
    Im sed gibt es eine Option -i, mit der man direkt in der Datei rein schreiben kann, ich hab es dann folgendermasen geregelt:
    Code:
    # VARIABLEN
    # ---------
    #
    FILE=test_sudo2
    TEXT_NR=$(( $( awk '/^# User alias specification.*ENDE/{ print NR }' $FILE ) - 2 ))
    
    # PROGRAMM
    # --------
    #
    while read TEXT
     do
       sed -i "$TEXT_NR a\ $TEXT" $FILE
       TEXT_NR=$((TEXT_NR+1))
     done < a
    
    Somit schreibt er mir das gleich in die Datei rein...
    Aber die Ausgabe sieht dann folgendermasen aus:
    Code:
    #======================================
    # User alias specification   **ANFANG**
    #======================================
    
    
    # User Alias - TEST1
    # ------------------
    #
    User_Alias TEST1 = test_user1
    
     # User Alias - TEST2
     # ------------------
     #
     User_Alias TEST2 = test_user2
    #======================================
    # User alias specification     **ENDE**
    #======================================
    
    Er macht blöder weiße mir einen Leerzeichen rein, da ich in meinen code folgendes drinstehen hab
    Code:
    sed -i "$TEXT_NR a\ $TEXT" $FILE
    Das leerzeichen nach \a $TEXT wird auch eingefügt :( Wie kann ich da unterbinden ? Ich hab schon folgendes Probiert
    Code:
    sed -i "$TEXT_NR a\ {$TEXT}" $FILE
    Hat aber nicht gefunkt, weil er mir das auch mit reingebracht hat und er mir dann folgendes aus gegeben hat:
    Code:
    #======================================
    # User alias specification   **ANFANG**
    #======================================
    
    
    # User Alias - TEST1
    # ------------------
    #
    User_Alias TEST1 = test_user1
    
     {# User Alias - TEST2}
     {# ------------------}
     {#}
     {User_Alias TEST2 = test_user2}
    #======================================
    # User alias specification     **ENDE**
    #======================================
    


    EDIT:

    Lange habe ich probiert, dass ich nicht gleich drauf gekommen bin !
    Also so funktioniert das:
    Code:
    sed -i "$TEXT_NR a\\$TEXT" $FILE
    Ich hab den entgültingen code noch nicht fertig, ich werde wenn ihr möchtet mein skript dann posten ...
    Das skript soll am schluss folgendes können, es werden 3 Datein erstellt, in dem die Definitionen für die Sudoers stehen, wenn man das Skript ausführt, werden diese Definitionen über das skript automatisch in die Sudo eingetragen... Das wird dann über scp an alle server Copiert und dann ausgeführt. Das erleichert einem wirklich viel arbeit...

    Ich möchte mich bei allen bedanken, die mir hier geholfen haben . DANKE !

    gruß

    geist_Der_foren
     
Thema: Texte in einer Datei in einer bestimmten zeile einzufügen
Besucher kamen mit folgenden Suchen
  1. linux shell sed zeichen in string einfügen

Die Seite wird geladen...

Texte in einer Datei in einer bestimmten zeile einzufügen - Ähnliche Themen

  1. WebODF 0.5 bringt Texteditor für ODF-Dokumente

    WebODF 0.5 bringt Texteditor für ODF-Dokumente: Das WebODF-Projekt hat Version 0.5 des im Browser laufenden Programmes veröffentlicht. Mit WebODF 0.5 kann man nicht nur ODF-Dokumente ansehen,...
  2. Linux Distri gesucht: einfach muss nicht schnell sein, vor allem für Texte

    Linux Distri gesucht: einfach muss nicht schnell sein, vor allem für Texte: Seit Januar 2012 fahre ich als Laie und Anfänger online mit Linux. Erstmal: Prima Sache besser als Win. 6 Monate live CD Hardy nun HD mit...
  3. Problem mit Texteingabe

    Problem mit Texteingabe: Moin, ich programmiere grade in C++ ein Programm in dem man Profile anlegen kann und stehe noch ziemlich am Anfang :) #include <iostream>...
  4. xfce4 -- Texteingabe im Terminal schlecht

    xfce4 -- Texteingabe im Terminal schlecht: Hi, ich benutze Archlinux als Distri und xfce4 als WM. Ich habe ein Problem mit meinem terminal: Wenn ich einen Befehl schreibe, der laenger...
  5. Gelöst: Keine man-Hilfetexte mangels Speicherplatz

    Gelöst: Keine man-Hilfetexte mangels Speicherplatz: Wenn ich auf meiner Maschine man aufrufe erhalte ich folgende Fehlermeldung: cat: Schreibfehler: Auf dem Ger�t ist kein Speicherplatz mehr...