Texte in einer Datei in einer bestimmten zeile einzufügen

  • Ersteller geist_der_foren
  • Erstellt am
G

geist_der_foren

Grünschnabel
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 ?
 
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.
 
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:
 
Bof, sowas hab ich noch nicht gemacht.
Aber warum willst du das mit SED reinschreiben?
 
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
 
Zuletzt bearbeitet:

Ähnliche Themen

Dateien ab einer bestimmten Zeile löschen

Textformatierung nach Cut "\" nach jeder Zeile?

[Gelöst] Suchen und ersetzen mit Hilfe mehrerer Parameter

.cfg Datei Analysieren und Zeilen Stellenweise abändern

Text mit mehreren Zeilen und Sonderzeichen ersetzten

Zurück
Oben