Datei zeilenweise schreiben

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von derwunner, 23.06.2012.

  1. #1 derwunner, 23.06.2012
    derwunner

    derwunner Doppel-As

    Dabei seit:
    12.07.2011
    Beiträge:
    118
    Zustimmungen:
    0
    Hallo,
    ist es mit Bash Mitteln irgendwie möglich, eine Datei mit schreibenden Zugriff zu öffnen, Zeile für Zeile rausschreiben und sie dann wieder schließen zu können?
    Ich kann leider keine Programmiersprache dafür verwenden, weil es Plain Text Dateien sein müssen. In den Shell Skripten müssen nämlich vor der Ausführung noch Ersetzungen nach bestimmten Textmustern vorgenommen werden.

    Bis jetzt leite ich die Ausgabe von echo in eine Datei um. Das ist aber auch nicht die fein englische Art und ich bin mir sicher, dass es dafür eine bessere Lösung gibt. Ich hatte mir auch schonmal das Tool sed angeschaut. Das hatte es leider auch nicht so gebracht. Stundenlang googeln half mir leider auch nicht weiter.

    Ich hoffe, Ihr könnt mir weiterhelfen.

    MFG derwunner
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 marcellus, 23.06.2012
    marcellus

    marcellus Kaiser

    Dabei seit:
    09.05.2007
    Beiträge:
    1.392
    Zustimmungen:
    0
    Ich versteh den Grund nicht zwingend zeilenweise schreiben zu müssen.

    Bash skripte führen ja einzelne Programme aus, um sowas wie write locks brauchst du dich dabei nicht zu kümmern. Wenn du "plain text" Programme ausführen willst kannst du auch perl verwenden, oder einfach das, was du ändern willst als Parameter in ein Programm übergeben.

    E: wenn du wirklich stundenlan suchst und nichts findest ist das üblicherweise ein Indikator dafür, dass das was du machen willst anders viel einfacher geht.
     
  4. #3 Spröde, 23.06.2012
    Spröde

    Spröde Alter Sack

    Dabei seit:
    22.01.2012
    Beiträge:
    173
    Zustimmungen:
    0
    Es ist kein Problem, eine Datei mit der Bash zeilenweise zu bearbeiten. Oder verstehe ich hier was falsch? Was willst Du denn tun?
     
  5. #4 tgruene, 24.06.2012
    tgruene

    tgruene Routinier

    Dabei seit:
    02.02.2012
    Beiträge:
    418
    Zustimmungen:
    0
    zum Beispiel
    Code:
    awk '{print $0}' datei.text
    . Die meisten Shell-Programme bearbeiten Dateien doch Zeilenweise. Wahrscheinlich meinst Du etwas anderes...?
     
  6. #5 derwunner, 24.06.2012
    derwunner

    derwunner Doppel-As

    Dabei seit:
    12.07.2011
    Beiträge:
    118
    Zustimmungen:
    0
    Ja klar, das weiß ich auch. Ich versuchs euch mal im Pseudo Code zu zeigen, was ich meine:
    Code:
    Variable b = Datei zum Schreiben öffnen
    b.schreibeZeile($text)
    b.schreibeZeihle($text2)
    b.schliessen()
    
    Also ich meine ob ich in der Shell die Dateiverarbeitung genauso wie in Java oder PHP machen kann. Einen Stream in den Arbeitsspeicher laden, Zeilen rausschreiben in den Arbeitsspeicher, die Datei auf die Festplatte flushen und schließen.
     
  7. #6 Gast123, 24.06.2012
    Gast123

    Gast123 Guest

    Nein, genau so wie in PHP oder in Java geht das nicht.
    Du kannst in Dateien zeilenweise schreiben, aber nicht in diesem Sinne auf eine Variable in den Hauptspeicher laden und dann eine Funktion dieser anwenden.
    Was du machst ist typisch objektorientiertes Denken. Die Datei ist in deinem Pseudocode eine Instanz einer Klasse, die die öffentliche Methode schreibeZeile mit einem Parameter vom Typ String anbietet.
    Die bash kennt jedoch keine Klassen; Lediglich Funktionen und Ausdrücke.

    VG

    Schard
     
  8. #7 marcellus, 25.06.2012
    marcellus

    marcellus Kaiser

    Dabei seit:
    09.05.2007
    Beiträge:
    1.392
    Zustimmungen:
    0
    Jein, es geht schon, aber statt zeilenweise zu schreiben kannst du Text hinten an eine Datei anhängen.

    Code:
    echo $text >> datei
    echo $text2 >> datei
    und schließen muss sich die Datei selber. Bash ist wesentlich mächtiger, als java und php, probier nicht diese dumme syntax und denkweise auf deine bash skripte anzuwenden, damit machst du dich nur unglücklich.
     
  9. #8 floyd62, 25.06.2012
    floyd62

    floyd62 Routinier

    Dabei seit:
    01.05.2007
    Beiträge:
    309
    Zustimmungen:
    0
    ... was auch geht (und manchmal sogar ganz nützlich sein kann :) -
    Code:
    exec 3>out
    
    echo aaa >&3
    (
    echo bbb
    echo ccc
    ) >&3
    
    exec 3>&-
    
    wird m.E. bei grösseren Skripten (mehrere solche Redirects) aber leicht unübersichtlich.

    A.
     
  10. #9 derwunner, 25.06.2012
    derwunner

    derwunner Doppel-As

    Dabei seit:
    12.07.2011
    Beiträge:
    118
    Zustimmungen:
    0
    Bin jetzt doch auf Perl umgestiegen.
    Nur noch eine Frage, warum wenn ich
    Code:
    #!/usr/bin/perl
    open(LOG, ">>datei");
    print LOG "hallo";
    close(LOG);
    
    eingebe, hängt er mir es nicht an? Stattdessen wird die Datei geleert, wie bei >. Ich prüfe aber auch nicht, ob es die Datei schon gibt. Gemerkt hat er aber deswegen auch nicht.
     
  11. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  12. #10 marcellus, 25.06.2012
    marcellus

    marcellus Kaiser

    Dabei seit:
    09.05.2007
    Beiträge:
    1.392
    Zustimmungen:
    0
    Wenn ich das ausführe passt es

    Code:
    $ ./dum 
    $ cat datei 
    hallo$ ./dum 
    $ cat datei 
    hallohallo$
     
  13. #11 derwunner, 02.07.2012
    derwunner

    derwunner Doppel-As

    Dabei seit:
    12.07.2011
    Beiträge:
    118
    Zustimmungen:
    0
    Ich habe es mittlerweile auch gelöst. Im Original war dort eine Variable, die ich so falsch hingeschrieben hatte, das war alles. Die Aufgabe wird jetzt komplett in Perl bewältigt. Danke für eure Hilfe!
     
Thema: Datei zeilenweise schreiben
Besucher kamen mit folgenden Suchen
  1. bash textdatei zeilenweise schreiben

    ,
  2. bash funktion in datei schreiben

    ,
  3. bash in datei schreiben

    ,
  4. bash text in zeile 3 schreiben,
  5. inhalt aus bashscript in datei schreiben,
  6. bashscript zeilen in datei schreiben
Die Seite wird geladen...

Datei zeilenweise schreiben - Ähnliche Themen

  1. Textdatei zeilenweise in durchnummerierte Variablen schreiben

    Textdatei zeilenweise in durchnummerierte Variablen schreiben: Hi Leute, ich versuche folgendes Problem zu lösen. Ich möchte eine Textdatei einlesen und den Inhalt jeder Zeile in immer eine neue Variable...
  2. Prblem mit zeilenweises auslesen von Datei und schreiben nach mysql

    Prblem mit zeilenweises auslesen von Datei und schreiben nach mysql: Hallo Eventuell kann mir jemand bei meinem Problem helfen. Ich habe mich irgendwie total verrannt und komme nicht weiter. Die folgende...
  3. in eine Datei zeilenweise reinschreiben

    in eine Datei zeilenweise reinschreiben: Hallo, bin gerade am Verzweifeln, denn alles, was sonst immer funktionierte geht plötzlich nicht mehr. mein Code: cat table1 | while read...
  4. Zeilenweise Mittelwert aus 3 Dateien

    Zeilenweise Mittelwert aus 3 Dateien: Hallo liebe Unix-Community! Als vollkommener Linux Neuling habe ich starke probleme ein wohl relativ einfaches Skript zu schreiben. Ich...
  5. Datei in shellscript Zeilenweise einlesen

    Datei in shellscript Zeilenweise einlesen: Eine Frage an die Linux-Gemeinde: Wie kann ich in einem Bash-Script eine Datei Zeilenweise einlesen und das Ergebnis als Parameter übergeben...