Dateimanipulation
Hallo zusammen, ich habe hier einen Haufen Dateien in einem Verzeichnis, in die 2 Zeilen oberhalb des jetzigen Textes eingefügt werden sollen. Durch das "oberhalb" entfällt ja "cat input >> datei", weil der input dann unterhalb steht. Die bisherigen Dateinamen müssen ebenfalls erhalten bleiben. Gibt es da irgenwie einen Einzeiler, der mir bei dem Problem hilft? Mit freundlichen Gruessen Joerg Haverkamp -- Wo dem Dativ am retten tut
On Tue, 2003-09-16 at 13:07, Joerg Haverkamp wrote:
Hallo zusammen,
ich habe hier einen Haufen Dateien in einem Verzeichnis, in die 2 Zeilen oberhalb des jetzigen Textes eingefügt werden sollen. Durch das "oberhalb" entfällt ja "cat input >> datei", weil der input dann unterhalb steht. Die bisherigen Dateinamen müssen ebenfalls erhalten bleiben. Gibt es da irgenwie einen Einzeiler, der mir bei dem Problem hilft?
head -n 2 dateiname ist dein Freund gruss Adam
Am Dienstag, 16.09.03 um 13:17 Uhr schrieb Adam Jendrosek:
On Tue, 2003-09-16 at 13:07, Joerg Haverkamp wrote:
Hallo zusammen,
ich habe hier einen Haufen Dateien in einem Verzeichnis, in die 2 Zeilen oberhalb des jetzigen Textes eingefügt werden sollen. Durch das "oberhalb" entfällt ja "cat input >> datei", weil der input dann unterhalb steht. Die bisherigen Dateinamen müssen ebenfalls erhalten bleiben. Gibt es da irgenwie einen Einzeiler, der mir bei dem Problem hilft?
head -n 2 dateiname ist dein Freund
gruss Adam
Hää?? man head NAME head - output the first part of files Damit erhalte ich die ersten 2 Zeilen der Datei(en). Aber ich will in ca. 300 Dateien oberhalb des jetzigen Textes 2 neue Zeilen (immer das gleiche) einfügen. Und mit head zeige ich nur an und manipuliere nichts. Mit freundlichen Gruessen Joerg Haverkamp -- sometimes you get answers on questions you never asked
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi,
Damit erhalte ich die ersten 2 Zeilen der Datei(en). Aber ich will in ca. 300 Dateien oberhalb des jetzigen Textes 2 neue Zeilen (immer das gleiche) einfügen. Und mit head zeige ich nur an und manipuliere nichts.
"man ed" ist Dein Freund. - Oder schnell und schmutzig: - --- 8< --- #!/bin/sh # # NOT TESTED!!! # for DATEI in /path/to/files/* ;do (printf "Zeile 1\nZeile 2\n ; cat ${DATEI} ) > ${DATEI}.tmpneu mv ${DATEI}.neu $DATEI done - --- >8 --- Gruß, Holger -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.3 (GNU/Linux) iD8DBQE/Zv5sR9A/7YTqjgURAvdVAJ0bTezV+a1UX98aQ/ZgR1PYd52/IACfU825 O1a3LZhwmdxBUU46RkQGZGc= =9ulv -----END PGP SIGNATURE-----
On Tue, Sep 16, 2003 at 02:13:21PM +0200, hvl@upb.de wrote:
- --- 8< --- #!/bin/sh # # NOT TESTED!!! # for DATEI in /path/to/files/* ;do (printf "Zeile 1\nZeile 2\n ; cat ${DATEI} ) > ${DATEI}.tmpneu mv ${DATEI}.neu $DATEI done - --- >8 ---
yo, oder auch mit dem großen Totschläger (getestet): for I in *; do perl -i -e '$/="völligunsinnigerstringdernirgendwovorkommt";print "bla\nfasel\n". <>;' $I; done Andre
On Tue, Sep 16, 2003 at 01:49:30PM +0200, Joerg Haverkamp wrote:
Aber ich will in ca. 300 Dateien oberhalb des jetzigen Textes 2 neue Zeilen (immer das gleiche) einfügen. Und mit head zeige ich nur an und manipuliere nichts.
AFAIK geht das nur über eine temporäre Datei. Dort schreibst du deine ersten zwei Zeilen rein und fügst danach die alte Datei an. -- Jens Kubieziel http://www.kubieziel.de Of course I can keep secrets. It's the people I tell them to that can't keep them. -Anthony Haden-Guest
Am Dienstag 16 September 2003 13:07 schrieben Sie:
Hallo zusammen,
ich habe hier einen Haufen Dateien in einem Verzeichnis, in die 2 Zeilen oberhalb des jetzigen Textes eingefügt werden sollen. Durch das "oberhalb" entfällt ja "cat input >> datei", weil der input dann unterhalb steht. Die bisherigen Dateinamen müssen ebenfalls erhalten bleiben. Gibt es da irgenwie einen Einzeiler, der mir bei dem Problem hilft?
Moin, kurze Antwort: ja, z.B. der hier ;-) for f in *; do cat ../die.ersten.zwei.zeilen.txt > /tmp/$f; cat $f >> /tmp/$f;mv /tmp/tmp/$f $f;done Aber bitte vorher ein Backup der Originaldaten machen und daran denken, daß die.ersten.zwei.zeilen.txt nicht in dem Verzeichnis liegen darf, in dem die zu ändernden Dateien liegen! Viel Spaß Stefan
Am Dienstag, 16.09.03 um 14:27 Uhr schrieb Stefan Ehlen:
Am Dienstag 16 September 2003 13:07 schrieben Sie:
Hallo zusammen,
ich habe hier einen Haufen Dateien in einem Verzeichnis, in die 2 Zeilen oberhalb des jetzigen Textes eingefügt werden sollen. Durch das "oberhalb" entfällt ja "cat input >> datei", weil der input dann unterhalb steht. Die bisherigen Dateinamen müssen ebenfalls erhalten bleiben. Gibt es da irgenwie einen Einzeiler, der mir bei dem Problem hilft?
Moin,
kurze Antwort: ja, z.B. der hier ;-)
for f in *; do cat ../die.ersten.zwei.zeilen.txt > /tmp/$f; cat $f >> /tmp/$f;mv /tmp/tmp/$f $f;done
Das war es knapp, kleiner Fehler (/tmp/tmp), aber dennoch besser, als das was ich, Manuell und Edit gemacht hätten. Vielen Dank. -- Mit freundlichen Gruessen / With best regards Joerg Haverkamp
On Tue, Sep 16, 2003 at 01:07:14PM +0200, Joerg Haverkamp wrote:
ich habe hier einen Haufen Dateien in einem Verzeichnis, in die 2 Zeilen oberhalb des jetzigen Textes eingefügt werden sollen. Durch das "oberhalb" entfällt ja "cat input >> datei", weil der input dann unterhalb steht. Die bisherigen Dateinamen müssen ebenfalls erhalten bleiben. Gibt es da irgenwie einen Einzeiler, der mir bei dem Problem hilft?
Hallo das Problem ist ja schon gelöst. Ich wollte nur noch eine Möglichkeit aufzeigen, das ohne tmp-datei zu machen. echo a >a.txt #!/bin/sh ed a.txt <<eot i dieses ist die neue erste Zeile . w q eot Grüße -- Hans-Joachim Hoetger "Lieber altes Europa als altes Arschloch!" Jürgen Becker (WDR TV, Mitternachtsspitzen vom 6.2.2003)
Teilnehmer (7)
-
Adam Jendrosek
-
Andre Landwehr
-
Hans-Joachim Hoetger
-
hvl@upb.de
-
Jens Kubieziel
-
Joerg Haverkamp
-
Stefan Ehlen