Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
Duff
- Beiträge: 6321
- Registriert: 22.03.2005 14:36:03
- Wohnort: /home/duff
Beitrag
von Duff » 24.01.2008 10:26:12
Hallo,
habe mal wieder eine Frage zum Werkzeug sed.
Und zwar möchte ich in einem Schritt eine Datei bearbeiten und verändern!
Bisher mache ein
Ich möchte aber, dass die Datei datei.txt geändert bleibt ohne die Ausgabe noch in eine extra Datei umlenken zu müssen.
Habe mir dazu zwar auch schon mal die Option r von sed angesehen, aber in Kombination bekomme ich es irgendwie nicht hin.
Danke.
Zuletzt geändert von
Duff am 24.01.2008 13:51:32, insgesamt 1-mal geändert.
Oh, yeah!
-
Savar
- Beiträge: 7174
- Registriert: 30.07.2004 09:28:58
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Berlin
Beitrag
von Savar » 24.01.2008 10:30:43
Der nicht dokumentierte Schalter "-i" ist das was du suchst..
-
Savar
- Beiträge: 7174
- Registriert: 30.07.2004 09:28:58
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Berlin
Beitrag
von Savar » 24.01.2008 10:31:34
Savar hat geschrieben:Der nicht dokumentierte Schalter "-i" ist das was du suchst..
Ist aber nicht Standard.. heißt, auf einem Solaris Server gibts den Schalter wahrscheinlich nicht... da musst du per Umlenkung das machen..
-
comes
- Beiträge: 2702
- Registriert: 11.03.2005 07:33:30
- Wohnort: /dev/null
-
Kontaktdaten:
Beitrag
von comes » 24.01.2008 10:32:57
Savar hat geschrieben:Der nicht dokumentierte Schalter "-i" ist das was du suchst..
wenn er undokumentiert ist, wie erfährt man dann, außer quellcode studie davon?
-
Duff
- Beiträge: 6321
- Registriert: 22.03.2005 14:36:03
- Wohnort: /home/duff
Beitrag
von Duff » 24.01.2008 10:35:57
Nee, es handelt sich um ein HP-UX. Habe diesen Schalter schon gefunden und auch in meinem schlauen awk&sed Buch geblättert, doch leider bekomme ich es nicht wirklich hin.
Oh, yeah!
-
Savar
- Beiträge: 7174
- Registriert: 30.07.2004 09:28:58
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Berlin
Beitrag
von Savar » 24.01.2008 10:43:09
Duff hat geschrieben:Nee, es handelt sich um ein HP-UX. Habe diesen Schalter schon gefunden und auch in meinem schlauen awk&sed Buch geblättert, doch leider bekomme ich es nicht wirklich hin.
Ich nehme an, dass HP-UX den Schalter auch nicht kenn
sorry..
@comes: durch einen Vortrag habe ich es erfahren.. und ich meine, weißt du das bei glxgears "-printfps" angegeben werden muss um die FPS zu sehen? (es gibt auch noch einen miesen ewig langen Namen aber egal..)
Grundsätzlich wird er denke ich deshalb nicht erwähnt, da er nicht standardkonform ist und damit Skripte nicht mehr distri-unabhängig sind..
-
roli
- Beiträge: 3174
- Registriert: 10.09.2003 17:39:58
Beitrag
von roli » 24.01.2008 10:44:28
Hi Daniel,
ich haette auch eine Loesung, die ich irgendwann mal irgendwo gefunden habe, ist also nicht auf meinem Mist gewachsen, kommt aber heute exclusiv fuer dich aus meinem Fundus ;-}
Code: Alles auswählen
sed ’s/^DEC 12/Aug 12/1’ logfile | dd of=logfile conv=notrunc
Achtung: die Datei darf durch die Ersetzung auf keinen Fall größer werden, da sonst der schreibende dd-
Befehl den lesenden sed-Befehl „überholt“, und es somit zu einer Endlosschleife kommen kann.
Roland
"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"
-
comes
- Beiträge: 2702
- Registriert: 11.03.2005 07:33:30
- Wohnort: /dev/null
-
Kontaktdaten:
Beitrag
von comes » 24.01.2008 10:48:19
Savar hat geschrieben:
@comes: durch einen Vortrag habe ich es erfahren.. und ich meine, weißt du das bei glxgears "-printfps" angegeben werden muss um die FPS zu sehen? (es gibt auch noch einen miesen ewig langen Namen aber egal..)
Grundsätzlich wird er denke ich deshalb nicht erwähnt, da er nicht standardkonform ist und damit Skripte nicht mehr distri-unabhängig sind..
möglich, aber wir schweifen ins private ab...
btw: glxgears zeigt bei mir auf der konsole die FPS an... ohne parameter...
-
Duff
- Beiträge: 6321
- Registriert: 22.03.2005 14:36:03
- Wohnort: /home/duff
Beitrag
von Duff » 24.01.2008 11:25:05
roli hat geschrieben:Hi Daniel,
ich haette auch eine Loesung, die ich irgendwann mal irgendwo gefunden habe, ist also nicht auf meinem Mist gewachsen, kommt aber heute exclusiv fuer dich aus meinem Fundus ;-}
Code: Alles auswählen
sed ’s/^DEC 12/Aug 12/1’ logfile | dd of=logfile conv=notrunc
Achtung: die Datei darf durch die Ersetzung auf keinen Fall größer werden, da sonst der schreibende dd-
Befehl den lesenden sed-Befehl „überholt“, und es somit zu einer Endlosschleife kommen kann.
Danke für das Beispiel Roland, aber ich würde es gerne über die Option -i machen.
Unter HP-UX gibt es aber auch die -i Option. Kann es aber auch unter debian testen.
Oh, yeah!
-
comes
- Beiträge: 2702
- Registriert: 11.03.2005 07:33:30
- Wohnort: /dev/null
-
Kontaktdaten:
Beitrag
von comes » 24.01.2008 11:30:23
erm... nur mal ne frage....
warum machst du dir nciht ein script?
Code: Alles auswählen
#!/bin/bash
# Karlotto.sh $1
TEMP_FILE=/tmp/karlotto
touch $TEMP_FILE
sed <commands> $1 >> $TEMP_FILE
rm -rf $1
cp $TEMP_FILE $1
exit 0
-
Duff
- Beiträge: 6321
- Registriert: 22.03.2005 14:36:03
- Wohnort: /home/duff
Beitrag
von Duff » 24.01.2008 11:38:05
Weil ich mal gerne wissen möchte, wie man es in nur einer Zeile mit sed realisieren kann.
...dann kann ich sowas nämlich auch in Zukunft mal nutzen...
Oh, yeah!
-
Meillo
- Moderator
- Beiträge: 9254
- Registriert: 21.06.2005 14:55:06
- Wohnort: Balmora
-
Kontaktdaten:
Beitrag
von Meillo » 24.01.2008 12:52:17
Duff hat geschrieben:Weil ich mal gerne wissen möchte, wie man es in nur einer Zeile mit sed realisieren kann.
ist der zu bevorzugende Weg.
Use ed once in a while!
-
Duff
- Beiträge: 6321
- Registriert: 22.03.2005 14:36:03
- Wohnort: /home/duff
Beitrag
von Duff » 24.01.2008 13:20:34
Meillo hat geschrieben:Duff hat geschrieben:Weil ich mal gerne wissen möchte, wie man es in nur einer Zeile mit sed realisieren kann.
ist der zu bevorzugende Weg.
Das ist mir schon klar, aber wie schon oben erwähnt, würde ich es gerne über die Optionen von sed machen (-i Option).
Nur wie?
Oh, yeah!
-
Meillo
- Moderator
- Beiträge: 9254
- Registriert: 21.06.2005 14:55:06
- Wohnort: Balmora
-
Kontaktdaten:
Beitrag
von Meillo » 24.01.2008 13:23:34
Duff hat geschrieben:würde ich es gerne über die Optionen von sed machen (-i Option).
Nur wie?
... würde ich sagen.
Vermutlich wird die Ausgabe des sed-Aufrufs einfach in die Quelldatei geschrieben.
Use ed once in a while!
-
Duff
- Beiträge: 6321
- Registriert: 22.03.2005 14:36:03
- Wohnort: /home/duff
Beitrag
von Duff » 24.01.2008 13:51:12
Meillo hat geschrieben:Duff hat geschrieben:würde ich es gerne über die Optionen von sed machen (-i Option).
Nur wie?
... würde ich sagen.
Vermutlich wird die Ausgabe des sed-Aufrufs einfach in die Quelldatei geschrieben.
Danke, wunderbar!!!
So einfach kann es sein, wenn man weiß wie und nicht total verkehrt gedacht hat.
Oh, yeah!
-
Savar
- Beiträge: 7174
- Registriert: 30.07.2004 09:28:58
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Berlin
Beitrag
von Savar » 24.01.2008 14:15:31
ups sorry.. dachte das wäre klar...
-
Duff
- Beiträge: 6321
- Registriert: 22.03.2005 14:36:03
- Wohnort: /home/duff
Beitrag
von Duff » 24.01.2008 14:24:34
Savar hat geschrieben:ups sorry.. dachte das wäre klar...
nein, leider nicht....
Oh, yeah!