Anzeige:
Ergebnis 1 bis 15 von 15

Thema: Texte in einer Datei in einer bestimmten zeile einzufügen

  1. #1
    Registrierter Benutzer
    Registriert seit
    Oct 2003
    Beiträge
    202

    Texte in einer Datei in einer bestimmten zeile einzufügen

    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. #2
    404 - Title not found Avatar von LKH
    Registriert seit
    Jun 1999
    Ort
    Jena
    Beiträge
    3.709
    Hi,

    keine Lösung, aber ein Hinweis: wenn's um Textdateien geht ist Perl immer erste Wahl.

    LKH
    freedom is just another word for nothing left to loose ...

  3. #3
    monoton und minimal Avatar von alexm
    Registriert seit
    May 2002
    Beiträge
    383
    Noch schöner und einfacher wäre XML, ich schwör drauf.

  4. #4
    Registrierter Benutzer
    Registriert seit
    Oct 2003
    Beiträge
    202
    @alexm

    wie soll ich das jetzt mit XML lösen ???
    Also das ist eine configurationsdatei im linux... ich möchte das schon mit shellskripting lösen, dass ich ein anders tool habe, der das ausführt.

  5. #5
    Who's Johnny? Avatar von L00NIX
    Registriert seit
    Mar 2004
    Beiträge
    1.228
    Zitat Zitat von LKH
    keine Lösung, aber ein Hinweis: wenn's um Textdateien geht ist Perl immer erste Wahl.
    ...oder (m|g)awk.

    Vom Kompliziertheitsgrad in etwa vergleichbar!

    @OP:
    Kannst du vielleicht genauer beschreiben, was du mit dieser Datei bezweckst, evtl. gibt es ja noch eine andere Möglichkeit (z.B. durch aneinanderhängen von Dateien).

  6. #6
    Registrierter Benutzer
    Registriert seit
    Oct 2003
    Beiträge
    202
    Das ist die /etc/sudoers und ich hab jetzt 50 Systeme auf den ich immer wieder die gleich einstellungen machen muss. Ich will ein skript schreiben der mir dies automatisch erledigt.

    ich hab kein plan ... ich was mit awk hinbekommen soll
    Geändert von geist_der_foren (25.06.04 um 14:26 Uhr)

  7. #7
    Who's Johnny? Avatar von L00NIX
    Registriert seit
    Mar 2004
    Beiträge
    1.228
    Zitat Zitat von geist_der_foren
    Das ist die /etc/sudoers und ich hab jetzt 50 Systeme auf den ich immer wieder die gleich einstellungen machen muss. Ich will ein skript schreiben der mir dies automatisch erledigt.

    ich hab kein plan ... ich was mit awk hinbekommen soll
    Was spricht gegen eine Verteilung via SCP?

    Und editieren kannst du die erste Datei mit visudo oder so...

  8. #8
    Registrierter Benutzer
    Registriert seit
    Oct 2003
    Beiträge
    202
    Das prob ist ... das die datei sich auf jeden System ändert !

    Also ich hab es mir folgendermassen gedacht, ich such einfach nach der Folgender Zeile # User alias specification **ENDE**
    und setze dann z.b. meinen eintrag 5 zeilen davor ?! Was meinst du ?

    Wie kann ich eigentlich heraus finden, in welcher Zeile sich "# User alias specification **ENDE**" befindent ?
    Geändert von geist_der_foren (25.06.04 um 14:48 Uhr)

  9. #9
    narf
    Registriert seit
    Aug 2003
    Ort
    Berlin
    Beiträge
    633
    Vielleicht hilft dir das (lösung mit sed):

    http://www.odise.de/projekte/eskeidbl/html/node4.html

  10. #10
    Who's Johnny? Avatar von L00NIX
    Registriert seit
    Mar 2004
    Beiträge
    1.228
    Zitat Zitat von geist_der_foren
    Das prob ist ... das die datei sich auf jeden System ändert !

    Also ich hab es mir folgendermassen gedacht, ich such einfach nach der Folgender Zeile # User alias specification **ENDE**
    und setze dann z.b. meinen eintrag 5 zeilen davor ?! Was meinst du ?

    Wie kann ich eigentlich heraus finden, in welcher Zeile sich "# User alias specification **ENDE**" befindent ?
    Ich weiß nicht, ob es einfachere Möglichkeiten dafür gibt...

    Code:
    #!/bin/bash
    #
    # Syntax: ${ME} Datei
    # Ausgabe: Neue Datei (stdout), kann dann mit > oder >> umgeleitet werden,
    #          oder einfach zweiten Parameter einbauen
    #
    FILE=$1
    
    # Zeilennummer des Endmarkers - 2
    LINE=$(( $( awk '/^# User alias specification.*ENDE/{ print NR }' sudoers ) - 2 ))
    
    # Anzahl der Zeilen der Datei
    LINE_COUNT=$( wc -l ${FILE} | awk '{ print $1 }' )
    
    # Ausgabe des ersten Dateiteils (inkl. des letzten User_Alias)
    head -n${LINE} ${FILE}
    
    # neuen User Alias hinzufuegen
    cat <<EOF
    # User Alias - TEST2
    # ------------------
    #
    User_Alias TEST2 = test_user2
    
    EOF
    
    # Rest der Datei anfuegen (Endmarker)
    tail -n$(( ${LINE_COUNT} - ${LINE} )) ${FILE}
    Das fügt nun das Hier-Dokument vor dem Endmarker ein. Vielleicht hilft dir das weiter...

  11. #11
    Registrierter Benutzer
    Registriert seit
    Oct 2003
    Beiträge
    202
    Also als erstes möchte ich mir bei allen bedanken für die Hilfe, vorallem bei L00NIX für den CODE.

    @L00NIX
    Das ist eine Super Idee gewesen, gibt es nicht die möglichkeit mit sed den Text ab Zeile 11 z.B. einfach ranzuhängen, so dass ich möglichst keine neue Datei erzeugen muss ? Ich hab es schon ein weilchen mit SED versucht, aber leider nicht hinbekommen.

  12. #12
    komplett "ausgebleicht" Avatar von Der Gestreifte
    Registriert seit
    May 2003
    Ort
    904**
    Beiträge
    3.247
    Das ist eine Super Idee gewesen, gibt es nicht die möglichkeit mit sed den Text ab Zeile 11 z.B. einfach ranzuhängen, so dass ich möglichst keine neue Datei erzeugen muss ?
    Es soll seds geben, die die Option "-i" kennen und so direkt in die originale Datei schreiben, ansonsten nimm halt "cp -b" (Backup der originalen Datei ist selten ein Fehler).
    Mit einer Datei "mach_neue_zeile.sed":
    Code:
    11a\
    Text der nach der elften Zeile Eingefügt werden soll
    und der Kommandozeile:
    Code:
    sed -f mach_neue_Zeile.sed originale_datei
    wird dann nach der elften Zeile der Datei "originale_datei" derText eingefügt.
    Warum kam es zu dem Problem?
    Welche Programme sind an dem Geschehen beteiligt?
    Was ist der Wortlaut der Fehlermeldungen?
    Wie heisst Deine Distribution?
    Warten Sie auf Rückfragen der Rettungsleitstelle.

  13. #13
    Registrierter Benutzer
    Registriert seit
    Oct 2003
    Beiträge
    202
    @Der Gestreifte

    Das mit der Option -i, was ein super tip, danke ... ich hab es nun folgender maßen 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**
    #======================================

  14. #14
    Open Socke Avatar von psycho0815
    Registriert seit
    Nov 2002
    Ort
    Bochum
    Beiträge
    741
    vielleicht so?
    sed -i "$TEXT_NR a\ ${TEXT}" $FILE

    gruß -psycho-
    Manche Menschen wollen immer glänzen, obwohl sie keinen Schimmer haben. (Heinz Erhardt)

  15. #15
    Registrierter Benutzer
    Registriert seit
    Oct 2003
    Beiträge
    202
    danke für den Tip ... aber das funkte auch nicht ...

    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
    Geändert von geist_der_foren (28.06.04 um 17:28 Uhr)

Ähnliche Themen

  1. pdf writer für samba in suse 8.0
    Von cos im Forum Anwendungen Allgemein, Software
    Antworten: 16
    Letzter Beitrag: 14.10.05, 20:34
  2. Datei fuer bestimmten User das ausfuehren sperren
    Von einki im Forum Linux Allgemein
    Antworten: 1
    Letzter Beitrag: 07.11.03, 17:15
  3. Mailserver-Anleitung (sendmail mit SMTP AUTH, fetchmail, vacation, procmail)
    Von termito im Forum Hier Suchen und Finden, Links, Tutorials
    Antworten: 0
    Letzter Beitrag: 17.05.02, 19:12
  4. allgemeine Fragen zu PAM
    Von BOsnoopy64 im Forum Sicherheit
    Antworten: 4
    Letzter Beitrag: 14.02.02, 17:03
  5. An Andree, meine Modem Geschichte :o)
    Von Holger Krause im Forum Linux Allgemein
    Antworten: 2
    Letzter Beitrag: 01.05.99, 20:48

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •