Toon posts:

hoe output naar html file schrijven per lijn ?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Na veel gezocht te hebben op inet, got, en mijn 1500 pagina dikke unix manual krijg ik het niet voor elkaar :(

ik wil een html pagina genereren met results uit een .TXT, dit lukt.

cat results.txt | grep Mpts | sort > mpts.html

de output echter (inhoud html) wordt allemaal achter elkaar geschreven. dit maakt het niet leesbaar :(

is er een string die de output op de console (die wel lijn voor lijn is) forward naar een file (html) en dan dus lijn voor lijn schrijft. ?

later ga ik dit met AT (of is cron handiger?) schedulen zodat ie auto update.

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 22:21
Als het je niet standaard lukt kun je wellicht een perl-scriptje schrijven :).

  • odysseus
  • Registratie: Augustus 2000
  • Laatst online: 18:35

odysseus

Debian GNU/Linux Sid

Komt het zonder regeleinden in het HTML-bestand of zie je geen enters als je het HTML-bestand in een browser bekijkt? In het laatste geval is het logisch en bovendien eenvoudig te verhelpen door een keer iets als het volgende over je HTML-bestand te draaien:
code:
1
cat mpts.html | sed s/$/\<br\>$/

Ik weet niet helemaal zeker of sed de regexp zo pakt, maar het idee is in ieder geval om aan het eind van elke regel een <br> in te voegen.
Als het probleem is dat je helemaal geen regeleinden je HTML-bestand hebt, dan wordt het wat lastiger...je kunt iets als het volgende proberen:
code:
1
for i in `cat results.txt | grep Mpts | sort`; do echo "$i\n" > mpts.html; done

Je kunt naar smaak ook de \n vervangen door \<br\> of iets anders natuurlijk :).

[ Voor 1% gewijzigd door odysseus op 22-06-2003 20:37 . Reden: for-lus moest worden afgesloten :). ]

Leven is het meervoud van lef | In order to make an apple pie from scratch, you must first create the universe.


Verwijderd

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
INFILE=results.txt
OUTFILE=mpts.html
TEMPFILE=$(mktemp /tmp/$0.XXXXXX)
grep Mpts $INFILE | sort > $TEMPFILE
LINES=$(cat $TEMPFILE | wc -l)
LINE=0
rm -f $OUTFILE
while [ $LINE -lt $LINES ]; do
  LINE=$(($LINE+1))
  TEXT=$(head -n $LINE $TEMPFILE | tail -n 1)
  echo "$TEXT<BR>" >> $OUTFILE
  done
rm -f $TEMPFILE


edit:
Die van odysseus is korter ja. :P.

[ Voor 19% gewijzigd door Verwijderd op 22-06-2003 20:48 ]


Verwijderd

Topicstarter
hij zet meerdere console line achter elkaar ..

dus

1-2-3
4-5-6

ipv

1
2
3
4
5
6

het is geen "lange" lijn, het vult wel de pagina

  • odysseus
  • Registratie: Augustus 2000
  • Laatst online: 18:35

odysseus

Debian GNU/Linux Sid

In dat geval zou mijn tweede oplossing wel moeten werken :).
Verwijderd schreef op 22 June 2003 @ 20:14:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
INFILE=results.txt
OUTFILE=mpts.html
TEMPFILE=$(mktemp /tmp/$0.XXXXXX)
grep Mpts $INFILE | sort > $TEMPFILE
LINES=$(cat $TEMPFILE | wc -l)
LINE=0
rm -f $OUTFILE
while [$LINE -lt $LINES]; do
  LINE=$(($LINE+1))
  TEXT=$(head -n $LINE $TEMPFILE | tail -n 1)
  echo "$TEXT<BR>" >> $OUTFILE
  done
rm -f $TEMPFILE


edit:
Die van odysseus is korter ja. :P.
Bovendien zou ik niet willen weten wat voor load dit geeft op een groot bestand...je moet voor elke regel weer een nieuwe head en tail uitvoeren, dan lijkt een for-lus me toch wat makkelijker :P. Die van jou is wel flexibeler, maar shellscripts *horen* gewoon fast'n'dirty te zijn >:).

Leven is het meervoud van lef | In order to make an apple pie from scratch, you must first create the universe.


  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 16:57

deadinspace

The what goes where now?

En als je die gegenereerde HTML file opent met een text-editor? Hoe ziet het er dan uit?

Verwijderd

Topicstarter
hij gaat bij done fout.. bash [0 command not found

  • odysseus
  • Registratie: Augustus 2000
  • Laatst online: 18:35

odysseus

Debian GNU/Linux Sid

Hmm, ik was vergeten er zelf een 'done' achter te zetten...maar een command not found zou dat niet op moeten leveren. Wat is de exacte regel die je invoert?

Leven is het meervoud van lef | In order to make an apple pie from scratch, you must first create the universe.


Verwijderd

Topicstarter
ik heb alles als losse commands ingeklopt :)

while [$LINE -lt $LINES]; do
LINE=$(($LINE+1))
TEXT=$(head -n $LINE $TEMPFILE | tail -n 1)
echo "$TEXT" >> $OUTFILE
done

dit stuk is 1 command (bij mij iig) na de done kom ik op >
type ik daar done krijg ik de error
hij genereert wel de mpts.html, maar die is leeg ..

Verwijderd

Topicstarter
while [$LINE -lt $LINES]; do > LINE=$(($LINE+1)) > TEXT=$(head -n $LINE $TEMPFILE | tail -n 1) > echo "$TEXT" >> $OUTFILE > done

zo dus als 1 command

  • odysseus
  • Registratie: Augustus 2000
  • Laatst online: 18:35

odysseus

Debian GNU/Linux Sid

Bij die laatste moet je een puntkomma hebben, geen '>' :). Overigens lijkt mijn oplossing me eenvoudiger, maar die van Beelzebubu werkt vast ook :).

Leven is het meervoud van lef | In order to make an apple pie from scratch, you must first create the universe.


Verwijderd

Topicstarter
met een ; same story : [0 command not found ..

probeer even odysseus oplossing

Verwijderd

odysseus schreef op 22 June 2003 @ 20:33:
Bovendien zou ik niet willen weten wat voor load dit geeft op een groot bestand...je moet voor elke regel weer een nieuwe head en tail uitvoeren, dan lijkt een for-lus me toch wat makkelijker :P. Die van jou is wel flexibeler, maar shellscripts *horen* gewoon fast'n'dirty te zijn >:).
True, ik doe niet echt aan load-optimalisatie... Ik kan vast ook wel alles met een string doen, maar weet je wel hoe lui ik ben? :P. Bovendien zou dat in een shell-script met awk moeten, en dat snap ik nog niet. ;).

edit:
Overigens werkt die van jou alleen als er geen spaties in de file voorkomen, anders wordt elk woord een aparte entry in de lus. :P.
Verwijderd schreef op 22 June 2003 @ 20:33:
hij gaat bij done fout.. bash [0 command not found
Mjah, er mistte een spatie. :).
Verwijderd schreef op 22 juni 2003 @ 20:40:
ik heb alles als losse commands ingeklopt :)
Het is dus de bedoeling dat je er een shell script van maakt, dus script.sh ofzo, dan dit eringooien met "#!/bin/sh" erboven en chmod a+x script.sh. :).

[ Voor 25% gewijzigd door Verwijderd op 22-06-2003 20:57 ]


Verwijderd

Topicstarter
sed werkt nu :)

cat results.txt | grep Mpts | sort | sed s/$/\<br\>$/ > mpts.html

  • odysseus
  • Registratie: Augustus 2000
  • Laatst online: 18:35

odysseus

Debian GNU/Linux Sid

Verwijderd schreef op 22 juni 2003 @ 20:49:
True, ik doe niet echt aan load-optimalisatie...
[insert-Gnome-flame-here] >:).
edit:
Overigens werkt die van jou alleen als er geen spaties in de file voorkomen, anders wordt elk woord een aparte entry in de lus. :P.
Bash heeft ergens een variabele om aan te geven wat er als delimiter wordt gebruikt toch? Dan maak je daar gewoon even \n van en dan is het goed ;). Als dat niet kan dan wordt het toch maar een echte taal als Perl...

Leven is het meervoud van lef | In order to make an apple pie from scratch, you must first create the universe.


Verwijderd

Topicstarter
Gaat redelijk snel ook .. 2 seconden ofzo voor een 2MB logfile

Dual MP2200+ 1250MB DDR

Verwijderd

odysseus schreef op 22 juni 2003 @ 21:02:
[insert-Gnome-flame-here] >:).
:'(. Ik heb nergens gezegd dat dat ook voor mijn Gnome-software gold... :'(.

/me in hoekje wegkruipt ... *

  • Apache
  • Registratie: Juli 2000
  • Laatst online: 28-04 15:52

Apache

amateur software devver

Verwijderd schreef op 22 June 2003 @ 21:10:
[...]


:'(. Ik heb nergens gezegd dat dat ook voor mijn Gnome-software gold... :'(.

* Apache in hoekje wegkruipt ... *
Hoeft ook niet, iedereen die gnome heeft gebruikt weet dat dat wel de filosofie moet zijn van de developers >:) :P

If it ain't broken it doesn't have enough features


Verwijderd

Topicstarter
Apache schreef op 22 juni 2003 @ 21:13:
[...]


Hoeft ook niet, iedereen die gnome heeft gebruikt weet dat dat wel de filosofie moet zijn van de developers >:) :P
Filosofie van gnome : alles in memory, niks in swap (disk)
KDE gebruikt veel meer swap space (bij mij iig)

Gnome is bij mij veel sneller ....

Verwijderd

Topicstarter
IIG, eindresultaat: 6 schedules gemaakt.

at 4:00 am
> cat results.txt | grep Mpts | sort | sed s/$/\<BR\>$/ > mpts.html
> uptime | grep up >> mpts.html
(ctrl-D)

eventueel checken met atq > en einddatum checken :)


Edit: toch maar in cron gezet :)

[ Voor 38% gewijzigd door Verwijderd op 23-06-2003 09:11 ]


  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 16:57

deadinspace

The what goes where now?

Verwijderd schreef op 23 juni 2003 @ 05:57:
Filosofie van gnome : alles in memory, niks in swap (disk)
Toch grappig dat Gnome en KDE daar niks over te zeggen hebben.

  • RvdMeer
  • Registratie: September 2003
  • Laatst online: 27-03 19:10
Oke, ik zal eerst even uitleggen wat ik van plan ben en waar ik nu uit kom.

Ik probeer nu al een tijd om een script te schrijven dat een grep doet op /var/log/maillog op relaying. Het probleem begint zodra ik deze als html output wil gaan gebruiken.

Hieronder het script wat ik heb geschreven: (*de 2de lijn van het script hoort nog bij de eerste lijn)

code:
1
2
3
4
5
6
7
8
9
cat /var/log/maillog | grep to= | sort | 
sed s/$/\<br\>/ > /var/www/html/log/traffic.html
cd /var/www/html/log
ftp -in <<EOF
open ftpserver.spoof.nl
user ronald *********
cd www
put traffic.html
bye

Dit werkt op zekere hoogte want de output van een Internet explorer is het volgende:

code:
1
2
3
Sep 16 21:30:12 spoof.nl sendmail[1586]: h8GJU8KP001586: 
ruleset=check_rcpt, arg1=, relay=www.abuse.net [208.31.42.77],
reject=550 5.7.1 ... Relaying denied

Misschien zie je het al, achter arg1= staat geen mail adres. Echter als we de source van de pagina bekijken staat het er wel (<relaytest%abuse.net@spoof.nl>).

code:
1
2
3
4
5
Sep 16 21:30:12 q-works sendmail[1586]: h8GJU8KP001586: 
ruleset=check_rcpt, arg1=<relaytest%abuse.net@spoof.nl>, 
relay=www.abuse.net [208.31.42.77], 
reject=550 5.7.1 <relaytest%abuse.net@spoof.nl>... Relaying 
denied<br>

Ik heb ook andere browsers gebruikt maar beide vertikken dit.. komt dit door de handling die ik gebruik met php? (include) en hebben jullie een oplossing hiervoor.

  • Kees
  • Registratie: Juni 1999
  • Laatst online: 14:55

Kees

Serveradmin / BOFH / DoC
je browser denkt dat <blaa> een html tag is en probeert die te parsen, dat werkt niet.. in je output dus all < en > vervangen door de { equivalenten wil wel werken denk ik :)

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


Verwijderd

deadinspace schreef op 23 June 2003 @ 16:45:
[...]

Toch grappig dat Gnome en KDE daar niks over te zeggen hebben.
Gnome gebruikt gewoon minder geheugen, er hoeft niks geswapt te worden 8)

Verwijderd

Verwijderd schreef op 22 June 2003 @ 19:49:
grep Mpts | sort > mpts.html
code:
1
sort results.txt | awk '/Mpts/ { print "<P>", $0, "</P>" }' results.txt | sort > mpts.html

Verwijderd

Kees schreef op 16 September 2003 @ 21:53:
je browser denkt dat <blaa> een html tag is en probeert die te parsen, dat werkt niet.. in je output dus all < en > vervangen door de &#123; equivalenten wil wel werken denk ik
Ehm. &lt; en &gt; toch...

Iets als
code:
1
sed -e 's/&/&amp;/g' -e 's/</&lt;/g' -e 's/>/&gt;/g'
zou dat een heel eind moeten filteren.
Zo even uit m'n hoofd, er kunnen spelfouten in zitten
Pagina: 1