Werte in File eintragen lassen

cat1510

Well-Known Member
Hallo Leute,

wie kann ich einen Wert, der in ein File geschrieben wurde wieder entfernen?

Zum Beispiel:

echo dasisteintestwert >> test.file

nun noechte ich den Wert wieder aus dem File raushaben auf umgekehrtem Weg.
Natuerlich ist das moeglich, leider weiss ich noch nicht wie. :o)

Kann man so einen Wert auch an eine bestimmte Stelle im file schreiben? Sagen wir Zeile 20?

MFG

CAT
 
1.a) grep -v "dasisteintestwert" test.file > test.neu
b) sed '/dasisteintestwert/,/dasisteintestwert/d' test.file > test.neu
c) awk '!/dasisteintestwert/{print $0}' test.file > test.neu

2.
sed 20d test.file > test.neu
 
Hi,

wenn du den Wert wieder raushaben willst kannst du ja ein einfaches:

---- script --------------------
#!/bin/sh
wert=`cat test.file`
echo $wert
--------------------------------

oder einfach
$ cat test.file, um den Wert wieder auszugeben, wenn er als einzigster in der
Datei steht, wobei ich gerade sehe das du den Wert ja über >> anhängst
da würde ein "tail -n 1 test.file" den letzten Wert wieder ausgeben

Gruss Jimbo
 
Oh ich sehe gerad, du willst an einer best. Stelle schreiben, nicht loeschen. Dann vergesse den Punkt 2 am besten wieder.

Ne unschoene, aber einfache Loesung waere:

head -19 test.file > test.neu
echo "wert" >> test.neu
tail +20 test.file >> test.neu

Haesslich und langsam, aber funktional. Ich wuerde das wohl mit sed probieren, weil ich das aber wohl nicht hinkriege, dann doch awk nehmen. Wie du das mit awk machst, ist Hausaufgabe fuers WE.

PS: Falls jemand die Loesung mit sed weis, ich waere da interessiert (mein sed-fu ist nicht so toll).
 
Also ich verstehe das noch nicht ganz.

Mein zonefile vom DNS Server. Da moechte ich per script einen Eintrag machen.
Und spaeter den Eintrag auch mit einem Script entfernen.

Wie heisst denn der Befehl oder das Argument, die Informationen an 20.igster Stelle in die Datei beispiel.dns zu schreiben?

echo "10.0.0.1 la la la meinserver" > beispiel.dns (fehlt nur das Argument fuer Zeile 20)

oder geht das nicht so einfach?

Und dann muss die Zeile 20 auch wieder geloescht werden koennen.
 
Steht doch da!

Einfuegen:
head -19 beispiel.dns > neu.dns
echo "10.0.0.1 meinserver" >> neu.dns
tail +20 beispiel.dns >> neu.dns
mv neu.dns beispiel.dns

Loeschen:
sed 20/d beispiel.dns > neu.dns; mv neu.dns beispiel.dns
ODER
sed -i 20/d beispiel.dns (geht aber nur, wenn sed -i kann)


Mal anders gefragt, wofuer brauchst du das? Hast du DDNS schonmal in Erwaegung gezogen?
 
Hum,
Ist der Wert Nun an einer bekannten Zeilenadresse zu finden oder nicht?

um den Wert in Zeile 2 file test zu setzen:
sed -iold '2s/BLA=.*/BLA=foo/' test

um den Wert in Zeile 2 file test zu loeschen:
sed -iold '2s/BLA=.*/BLA=/' test

...naja ehrlich gesagt haette ich das wohl gelassen und gleich geperlt.
 
Zuletzt bearbeitet:
Zurück
Oben