cellie Geplaatst: 25 september 2006 Geplaatst: 25 september 2006 Ik ben bezig met een script om wat tekst uit een bestand te peuteren. Nu is de awk van busybox wel erg beperkt, en het lukt me niet echt van een 1 regelig bestand het eerste woord eruit te halen. Zowel Code: awk '( $1 )' text.txt als Code: awk '( $2 )' text.txt geven de volledige regel terug. text.txt bevat 1 regel. Code: 677 /tmp/share.info Code: awk '( $3 )' text.txt geeft helemaal nix terug. Maar zo hoort het ook. Wat zie ik hier over het hoofd? Assumption is the mother of all fuckups
Erik Slagter Geplaatst: 25 september 2006 Geplaatst: 25 september 2006 Ik ben geen awk-die-hard maar ik weet wel dat awk op de ppc dreamboxen wordt geimplementeerd door busybox. Deze heeft vak wat uitgeklede versies van unix-commando's (waar tegenover staat dat hij veel kleiner is). Het kan dus heel goed dat de busybox awk niet alle functionaliteit van awk implementeert, en zeker niet van gawk (gnu awk). DM8000 + VU+Ultimo + GSO op Wavefrontier PLI Core Member www.openpli.org
sigmo Geplaatst: 25 september 2006 Geplaatst: 25 september 2006 je syntax klopt niet helemaal. Het moet als volgt: awk '{ print $2 }' /etc/inetd.conf
cellie Geplaatst: 25 september 2006 Auteur Geplaatst: 25 september 2006 sigmo heeft de hoofdprijs gewonnen. Damn, was alles maar zo makkelijk. Ik zie het nu ook, ik heb een te klein lettertype in m'n browser gebruikt, of de site gebruikt een nogal wazig font en zodoende zag de {} op de man page er uit als een (). Tjongejonge wat ben ik daar lang mee druk geweest. Thanks! Assumption is the mother of all fuckups
Gast Geplaatst: 25 september 2006 Geplaatst: 25 september 2006 > > awk '( $3 )' text.txt > awk '{ print $2 }' /etc/inetd.conf Maar pas op: als er meerdere regels zijn in je file krijg je voor elke regel het eerste woord. Als je alleen van de 1e regel het 1e woord wilt kun je dat als volgt doen: awk 'NR==1 {print $1}' textfile Mocht je meer van deze vragen hebben laat het dan even weten, en ik geef je een spoedcursus.
cellie Geplaatst: 26 september 2006 Auteur Geplaatst: 26 september 2006 @digisok Eigenlijk zoek ik een expressie die van de laatste regel het tweede woord weergeeft. Ik gebruik nu iets als: Code: wc -l /tmp/text1.txt > /tmp/tmp.txtawk '{ print $2 }' /tmp/tmp.txt > final.txt Dit werkt, maar is natuurlijk megavies. Kan vast in 1 keer. Hoewel dit soort ranzige constructies wel werken is er vast een betere manier. Een linkje naar een goede awk faq of een link naar een howto zou fijn zijn, de man pages zijn eigenlijk voor de meer gevorderde gebruiker. Assumption is the mother of all fuckups
Gast Geplaatst: 26 september 2006 Geplaatst: 26 september 2006 tail -n1 /tmp/text1.txt | awk '{ print $2 }' Dit ongeveer wat je bedoelt? Pipes zijn hiervoor een stuk handiger dan temporary files. Greetz, Lion.
Littlesat Geplaatst: 26 september 2006 Geplaatst: 26 september 2006 ;-) Dit is een andere manier... zonder awk. De eerste regel is voldoende wat jij wilde. De rest zijn extra opties.... Draait zeer zeker onder PLi. Of hij onder Gemini draaid weet ik niet... daar Gemini een overdreven gestript busybox heeft (daar zit nog niet eens telnet in en nc werkt niet altijd)... Code: cat /tmp/share.info | wc -l | sed "s/ *//;s/^/CaIDs available: /" cat /tmp/share.info | cut -d " " -f7,10 | sort | uniq | wc -l |\ sed "s/ *//;s/^/Cards available: /" cat /tmp/share.info | cut -d " " -f10 | sort | uniq | wc -l |\ sed "s/ *//;s/^/Peers available: /" cat /tmp/share.info | cut -d " " -f6 | sort | uniq | wc -l |\ sed "s/ *//;s/^/Prov. available: /" cat /tmp/share.info | cut -d " " -f9 | cut -d ":" -f2 |\ sort | uniq -c | tr "\t" " " |\ sed "s/ *//;s/\(.*\) \(.*\)/CaIDs at dist \2: \1/" cat /tmp/share.info | cut -d " " -f8 | cut -d ":" -f2 |\ sort | uniq -c | tr "\t" " " |\ sed "s/ *//;s/\(.*\) \(.*\)/CaIDs at lev \2: \1/" Binnenkort is bijna alles in MPEG4 bij CanalDigitaal... je SD ontvanger kan dus in de Kliko
Gast Geplaatst: 26 september 2006 Geplaatst: 26 september 2006 > Eigenlijk zoek ik een expressie die van de laatste regel het tweede woord > weergeeft. Voor de 1e regel is het dus: awk 'NR==1 {print $1}' textfile En voor de laatste regel is het dus: awk 'END {print $1}' textfile Enige toelichting: NR==1, geeft aan dat je als regel 1 langskomt je iets moet doen END, geeft aan dat als het einde van de textfile bereikt is er iets gedaan moet worden. In beide gevallen staat er tussen de {} welke actie er gebeurt. Des te korter het script, des te sneller het uitgevoerd wordt. Waarom vele mensen die meerliners en evt. temporary files gebruiken is mij een raadsel. G.
cellie Geplaatst: 26 september 2006 Auteur Geplaatst: 26 september 2006 @All Pfff, ik ga eea even rustig laten bezinken. Voorlopig kan ik weer vooruit. Dank voor de input, het word weer laat vanavond. @digisok Misschien omdat ze beginners in het scriptgebeuren zijn? Ik zoek me rot naar de juiste commando en syntax, en kom er dan nogal eens achter dat de busybox (in Gemini) niet doet wat ik wil. Als je dan als beginnende scripter doorzet, met eigenlijk onvoldoende kennis kom je op nogal barokke constructies uit. Met de nodige tussenstappen. Maar evengoed bedankt voor de info en het meedenken. Een achtergrond in pascal/delphi is btw niet zo heel nuttig onder de CLI van Linux valt me nu wel heel erg op. Had toch die C++ compiler wat meer aandacht moeten geven. -EDIT- @littlesat Nee dat doet het idd niet onder gemini 3.10 Nu heb ik een geldige reden eens Pli te installeren. Alleen nog m'n vriendin overtuigen, die zal andere software wel niet zo op prijs stellen. Assumption is the mother of all fuckups
Littlesat Geplaatst: 26 september 2006 Geplaatst: 26 september 2006 Gemini is voor scripts (onder o.a. telnet) echt bocht... Echt slecht(!) Alleen valt dat de meeste onder ons niet op. PLi is een van de images waar je stukke meer met scripting kan. Binnenkort is bijna alles in MPEG4 bij CanalDigitaal... je SD ontvanger kan dus in de Kliko
gijs Geplaatst: 27 september 2006 Geplaatst: 27 september 2006 Citaat: Misschien omdat ze beginners in het scriptgebeuren zijn? Ik zoek me rot naar de juiste commando en syntax, en kom er dan nogal eens achter dat de busybox (in Gemini) niet doet wat ik wil. Als je dan als beginnende scripter doorzet, met eigenlijk onvoldoende kennis kom je op nogal barokke constructies uit. Met de nodige tussenstappen. Maar evengoed bedankt voor de info en het meedenken. Hier heb ik veel aan gehad, bestudering lost vele raadsels op <img src="/forums/images/graemlins/cool.gif" alt="" /> (voor de (ba)sh shell):http://howtos.linux.com/guides/abs-guide/index.shtml
Aanbevolen berichten
Maak een account aan of log in om te reageren
Je moet een lid zijn om een reactie te kunnen achterlaten
Account aanmaken
Registreer voor een nieuwe account in onze community. Het is erg gemakkelijk!
Registreer een nieuwe accountInloggen
Heb je reeds een account? Log hier in.
Nu inloggen