variable am dateinfang einfügen

weor

weor

Mitglied
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
 
Zuletzt bearbeitet:
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.
 
Zuletzt bearbeitet:
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
 
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...
 
Zuletzt bearbeitet:
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.
 
Zuletzt bearbeitet:
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.
 
super, funktioniert...

ich danke euch wirklich sehr.
 

Ähnliche Themen

Wie komme ich an den Inhalt des Inhalts einer Variable?

Queue für copy Script

variable in datei dauerhaft ändern und speichern

Last mit etc/passwd anzeigen lassen

Windows clients können nicht mehr auf lange laufendes System zugreifen

Zurück
Oben