variable am dateinfang einfügen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von weor, 21.08.2007.

  1. #1 weor, 21.08.2007
    Zuletzt bearbeitet: 21.08.2007
    weor

    weor Mitglied

    Dabei seit:
    14.04.2005
    Beiträge:
    42
    Zustimmungen:
    0
    Ort:
    Dresden
    hallo!
    ich stehe grad etwas auf dem schlauch mit sed.
    ich hab ein kleines script welches mir gewisse daten aus nem logfile holt und diese in einer neuen datei speichert.
    so, das funktioniert auch ordentlich. jetzt dachte ich mir, das die neusten einträge oben in der datei erscheinen sollen und nicht unten.
    tja, und peng, steh ich auf dem schlauch.

    das script sieht jetzt so aus
    Code:
    n=1
    while read line ; do
    eval "line$n=\"$line\""
    
    USR=`echo $line | cut -d"~" -f1`
    DAT=`cat /root/logftp1 | grep STOR | tr -d ' ][}{"'`
    DEL=`cat /var/log/proftpd.accesslog | grep STOR | grep "$USR"`
    
    echo "$DAT" | grep "$USR" >>/var/www/historie/"$USR"_upload
    
    n=`expr $n + 1`
    
    done < /var/www/list_ftp
    
    diese zeile ist die, die die daten in der textdatei anfügt.
    Code:
    echo "$DAT" | grep "$USR" >>/var/www/historie/"$USR"_upload
    
    so, und die wollte ich nun so anpassen das die irgendwie oben in dem $USR_file erscheint.

    wer könnte mal so nett sein und sich das mal anschauen und nen vorschlag machen oder nen denkanstoss geben?
    wäre sehr dankbar
     
  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 smg, 21.08.2007
    Zuletzt bearbeitet: 21.08.2007
    smg

    smg Regex Fetischist

    Dabei seit:
    20.05.2007
    Beiträge:
    195
    Zustimmungen:
    0
    Ort:
    /home/stephan/
    Code:
    tac oldfile > newfile 
    bissel hacky, aber was solls? :P leider ist das ein UUOC/UUOT man könnte es auch mit sed lösen:

    Code:
    sed '1i\STUFF_TO_INSERT' "$file"
    das hängt immer oben an, also nicht unten wie dein >> Befehl.
     
  4. #3 Wolfgang, 21.08.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Mit GNU sed kannst du einen festen Text am beginn einfügen:
    Code:
    wolle@Nietzsche:~
    $ cat test
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    wolle@Nietzsche:~
    $ sed  -i -e '1s/^.*$/davor¸\n&/' test
    davor¸
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    Oder du arbeitets mit temp-Dateien und fügst erst di Zeile in die neue Datei und hängst die alte an.


    Übrigens ist expr für Iteration in der Bash veraltet und um x-faches langsamer als:
    Code:
    ((n++));
    
    Gruß Wolfgang
     
  5. #4 weor, 21.08.2007
    Zuletzt bearbeitet: 21.08.2007
    weor

    weor Mitglied

    Dabei seit:
    14.04.2005
    Beiträge:
    42
    Zustimmungen:
    0
    Ort:
    Dresden
    tac hab ich mir auch schon überlegt...
    nur wird das nach dem zehnten neuen eintrag wohl totaler mist.
    oben wird unten dann wieder oben, unten oben hin und her.
    somit hab ichs wieder verworfen

    edit: kann man den festen text nicht durch ne VAR ersetzen?
    vardammt...
     
  6. #5 smg, 21.08.2007
    Zuletzt bearbeitet: 21.08.2007
    smg

    smg Regex Fetischist

    Dabei seit:
    20.05.2007
    Beiträge:
    195
    Zustimmungen:
    0
    Ort:
    /home/stephan/
    Guck dir mal meinen 2. Vorschlag an, der tut wunderbar. :)
    Wolfgang hat noch einen Vorschlag gemacht der auch geht mit dem Substitutionsoperator.

    Code:
    cat text 
    foo
    bar
    
    sed "1i\neuer text" text
    neuer text
    foo
    bar
    
    Wenn GNU sed dann einfach -i und fertig.
     
  7. #6 Wolfgang, 21.08.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Ja kannst du, aber dann verwende Doppelquotas für die Befehle.
    Code:
    A=foobar
    sed -e "s/bar/$A/" input
    
    Gruß Wolfgang
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  9. smg

    smg Regex Fetischist

    Dabei seit:
    20.05.2007
    Beiträge:
    195
    Zustimmungen:
    0
    Ort:
    /home/stephan/
    Wolfang meint Doppelquotes " keine Quotas. :)

    Ich glaube aber du wilst das hier, oder?
    GNU sed:
    Code:
    sed -i "1i\\$VAR" text
    Normales sed mit IO-Redirects.
     
  10. weor

    weor Mitglied

    Dabei seit:
    14.04.2005
    Beiträge:
    42
    Zustimmungen:
    0
    Ort:
    Dresden
    super, funktioniert...

    ich danke euch wirklich sehr.
     
Thema:

variable am dateinfang einfügen

Die Seite wird geladen...

variable am dateinfang einfügen - Ähnliche Themen

  1. Linux 4.5 will UEFI-Variablen besser schützen

    Linux 4.5 will UEFI-Variablen besser schützen: Das Löschen bestimmter UEFI-Variablen kann manche Rechner nicht mehr startbar machen. Das kommende Linux 4.5 ergreift Maßnahmen dagegen, die im...
  2. Wie komme ich an den Inhalt des Inhalts einer Variable?

    Wie komme ich an den Inhalt des Inhalts einer Variable?: Hallo Zusammen, ich möchte meine Buildumgebung vereinfachen und besser zu automatisieren. Ein Skript schreibt Pfade in die env und diese...
  3. 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...
  4. mysql Select Abfrageergebnis in unterschiedlichen Variablen sichern

    mysql Select Abfrageergebnis in unterschiedlichen Variablen sichern: Hallo zusammen, es geht um folgenden Teil meiner .sh-Datei: NumberCheck=`mysql $SQL_ARGS "SELECT lkw, Firma FROM adb_group WHERE...
  5. Teil einer Variablen auslesen und in neue Variable schreiben

    Teil einer Variablen auslesen und in neue Variable schreiben: Hallo, ist für Euch bestimmt ganz einfach, aber trotz googlen komme ich nicht auf eine Lösung. In Variable x habe ich stehen: xy,ab Nun möchte...