Ga naar inhoud


Aanbevolen berichten

Geplaatst:

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

 


Geplaatst:

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

Geplaatst:

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

 

Geplaatst:

> > 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.

Geplaatst:

@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

 

Geplaatst:

tail -n1 /tmp/text1.txt | awk '{ print $2 }'

Dit ongeveer wat je bedoelt?

Pipes zijn hiervoor een stuk handiger dan temporary files.

 

Greetz, Lion.

Geplaatst:

;-)

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
Geplaatst:

> 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.

Geplaatst:

@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

 

Geplaatst:

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
Geplaatst:
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

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 account

Inloggen

Heb je reeds een account? Log hier in.

Nu inloggen
  • Wie is er online   0 leden

    • Er zijn geen geregistreerde gebruikers deze pagina aan het bekijken
×
×
  • Nieuwe aanmaken...