zeile am dateianfang einfügen

tmp

Ensign
Registriert
Feb. 2004
Beiträge
253
hallo!

und zwar möchte ich über die konsole eine zeile am anfang einer datei anfügen.
könnt ihr mir einen tipp geben,wie ich das machen könnte?

vielen dank schon mal :)
 
Also ich bin kein Linux-Kenner, aber aus anderweitiger Programmiererfahrung weiß ich, dass das Einfügen in eine Datei von Haus aus selten richtig gut unterstützt wird im Gegensatz zum Anhängen... der Grund ist einfach... Beim Anhängen ist die Operation relativ simpel, Datei wird geöffnet, und am Ende kommt was dazu, d.h. alles was in der Date war bleibt unverändert...

Fügt man nun am Anfang was ein, dann verändert dies jeden einzelnen Sektor der Datei. Stell dir vor, die Festplatte ist in Schubladen (Sektoren bzw Zuordnungseinheiten) organisiert, jede Schublade kann nur von einer Datei genutzt werden... Möchtest du was in die erste Schublade hinzufügen, musst du was von der ersten in die zweite tun um Platz zu schaffen, und selbiges bis zu dieser bis du bei der letzten angekommen bist...

In der Praxis wird dies dann meist durch das Neuerstellen einer Datei, das Schreiben des Einzufügenden Textes, und dann das schlichte Kopieren aus der alten Datei in die neue und das anschließende Löschen der alten und das Umbenennen der neuen Datei in die alte...

Warum ich dir das erzähle? Weil ich irgendwie nicht glaube, dass es einen Standardbefehl gibt, der das erledigt... aber es hat sich bestimmt schon jemand die Mühe gemacht, ein kleines Konsolenprogramm zu schreiben, dass diese Arbeitsschritte durchführt. Wenn die Datei(en) nicht groß sind, dürfte es auch kein Problem darstellen in Sachen Ausführungsdauer/Performance...
 
Wie wärs wenn du die Datei eindach in einem Editor öffnest, "Enter" drückst, speicherst, schließt und fertig ^^

Beispiel nano (ein Editor): nano /datei. enter drücken. strg+o (speichern). strg+x (schließen).

So schwer ist es wirklich nicht ;)
 
kampfgnom. ganz einfach deswegen,weil es automatisiert ablaufen muss. sonst würd ich ja nicht fragen,oder? ;)

es geht hier um große dateien (~200mb)
und da ich das von 1668mib beschriebene "problem" kenne,wollt ich eben mal wissen ob linux nicht von haus aus ein entsprechendes programm mitbringt.
 
Dass es automatisiert ablaufen soll ist aus deinem ersten Post aber nicht zu erkennen gewesen. Fragen könntest du auch weil du es einfach nicht weißt ;)

Ansonsten denke ich dass es tatsächlich so ablaufen wird dass du mit zwei echos arbeitest. Erst eine Leerzeile reinechoen und dann die originale Datei. So wie es 1668mib schon beschrieben hat.
Muss das ganze wirklich so schnell ablaufen dass dir diese Methode zu langsam wäre?

EDIT: Zusammengefasst muss ich sagen dass ich kein Programm kenne dass diese Aufgabe übernimmt, was aber eindeutig nicht heißt dass es keins gibt ^^
 
@1668mib hübsche Erläuterung

@tmp
1. mv originaldatei tempdatei
2. echo "text" > originaldatei
3. cat tempdatei >> originaldatei

in UNIX wenn es sich um eine Textdatei handelt. Bei Binärdateien bin ich mir nicht Sicher, ob das funktioniert.
 
"Nicht-Ascii"-Dateien haben keine Zeilen. Zumindest nicht so wie wir des Lesens mächtige Personen es verstehen.
Insofern braucht man darauf keine Rücksicht nehmen :).
 
vielen dank für eure hilfe.
komischerweise hab ich keine mail bekommen,dass antworten im thread gekommen sind?!

geschwindigkeit spielt bei dem programm leider eine ausserordentlich große rolle.
es geht nämlich um das lösen von (sehr großen) sudokus.

momentan löse ich 81x81 sudokus in ca 100 sekunden auf einem 1ghz pc.
problem ist,dass zB ein 81x81 sudoku kodiert ca 1.6gb gross ist -> wenn ich nun eine zeile an den anfang schreiben will,dauert es mit der oben beschriebenen methode ebenfalls sehr lang,da die daten ja kopiert werden müssen.
naja..montag ist schon der wettbewerb..bis dahin werd ich das wohl nicht mehr hinbekommen.

vielen dank trotzdem! :)
 
ich bin gerade noch mal auf eine alternative idee gekommen.
vlt hat jemand von euch ja spontan eine antwort:

ist es möglich,bei grossen dateien die restlichen X zeilen am ende der datei zu entfernen,OHNE die komplette datei durchzugehen? also dass selbst bei einer 10gb datei nur 20ms dafür verwendet werden,um die letzten zeilen zu entfernen?
 
Zurück
Oben