Software > Programmieren, Kompilieren
nicht unten dran-haengen sondern oben drauf-kleben
Toktar:
Was ist denn gegen tac zu sagen. Damit gibst Du den Inhalt rückwärts aus und kannst die neuen Zeilen unten dranhängen....
llothar:
--- Zitat von: signal_15 am 02. April 2009, 13:51:51 ---@llothar
jetzt habe ich deinen faden verloren. wie meinen?
--- Ende Zitat ---
Ich bin jetzt nicht der Shell Scripter aber irgendwas wie
cat neue_nachricht.txt | reverse -l >> datei_mit_allen_nachrichten.txt
sowie
tail -n 100 datei_mit_allen_nachrichten.txt | reverse -l
"reverse -l" ist jetzt aber ein selbstgeschriebenes Tool. Hab gerade kein Unix am
laufen um zu sehen wie der Parmaeter wirklich heisst. "reverse -l" nimmt die
Eingabe entgegen und gibt sie umgekehrt wieder aus, mit option "-l" basierend
auf Zeilenbasis.
Mit obigem würdest du in der ersten Zeile halt eine Nachrichten an dein Nachrichten Log anhängen.
Und mit der zweiten Zeile die letzten 100 Zeilen aller Nachrichten ausgeben.
Komplexität ist immer O(n) mit n der Grösse der hinzufügenden Nachricht und der Anzahl der
Zeilen die du im CGI script ausgeben würdest. Selbst wenn deine Datei in der du die
Nachrichten sammelst Gigabyte gross wird ist das also noch extrem performant.
Edit:
Erst jetzt sehe ich das Toktar geantwortet hat.
Statt reverse also "tac" nutzen und fertig.
dornroeschen:
--- Zitat von: llothar am 02. April 2009, 23:17:55 ---Erst jetzt sehe ich das Toktar geantwortet hat.
Statt reverse also "tac" nutzen und fertig.
--- Ende Zitat ---
oder /usr/bin/tail -r ;D
Rainer
signal_15:
Guten Morgen,
ich bin jetzt bei meiner ersten version geblieben. sie funktioniert wie geplant und laeuft auch schnell genug.
--- Code: ---# build the news-db
echo "<tr><td>$mdate</td><td>$mtime</td><td></td><td><b>$FORM_ueberschrift</b></td></tr>" >> $temp1
echo "<tr><td> </td><td> </td><td></td><td>$FORM_nachricht <br><br></td></tr>" >> $temp1
$cat $newsdb >> $temp1
$cat $temp1 > $newsdb
# build the page
/usr/local/bin/cat $newsheader > $newsindex
/usr/local/bin/cat $newsdb >> $newsindex
/usr/local/bin/cat $newsfooter >> $newsindex
--- Ende Code ---
das ganze mit 'tail -r' oder reverse, haette gar nicht mal so leicht geklappt da die neuen eintraege mehrzeilig sind und bei einem 'tail -r' dann alles durcheinander gewuerfelt worden waere.
ct,
meik:
--- Zitat von: signal_15 am 09. April 2009, 09:26:27 ---Guten Morgen,
ich bin jetzt bei meiner ersten version geblieben. sie funktioniert wie geplant und laeuft auch schnell genug.
--- Ende Zitat ---
Ich bin der festen Überzeugung, dass die meisten vorausschauenden Optimierungen gar nicht nötig sind. ;-)
So ad hoc würden mir noch die folgenden Änderungen einfallen:
--- Zitat ---
--- Code: ---# build the news-db
echo "<tr><td>$mdate</td><td>$mtime</td><td></td><td><b>$FORM_ueberschrift</b></td></tr>" > $temp1
echo "<tr><td> </td><td> </td><td></td><td>$FORM_nachricht <br><br></td></tr>" >> $temp1
$cat $newsdb >> $temp1
mv $temp1 $newsdb
# build the page
/usr/local/bin/cat $newsheader $newsdb $newsfooter > $newsindex
--- Ende Code ---
--- Ende Zitat ---
* Beim ersten echo solltest du das >> durch ein > ersetzen, um das File garantiert neu anzulegen (falls das nicht weiter oben schon passiert)
* Ein Umbenennen ist schneller als ein Kopieren, das mv kannst du natürlich noch als $mv oder "mv -f" nach Geschmack anpassen.
* Und ein cat mit drei Parametern ist schneller als dreimal cat mit einem File. :-)
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln