Toon posts:

awk probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
hoi tweakers,

Ik ben tegen een probleem opgelopen...
Het tekst bestand ziet er als volgt uit.
$1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12
05.12.2005 10:55:17 gesprek naar mobiel nummer Telfort 06******** 02:46 0,00 B
05.12.2005 13:18:56 gesprek naar mobiel nummer 06******** 00:03 0,00 B
..

Ik wil een overzicht kan krijgen van alle gebelde nummers.
Maar als ik awk '{print $9}' bestand
dan krijg ik de nummers met Telfort wel goed maar andere nummers niet.
Hoe kan ik dit oplossen?
aub mailen naar hierstondeenadres@mail.tld hier antwoorden

[ Voor 5% gewijzigd door blaataaps op 05-02-2006 20:27 . Reden: Als je je vraag stelt op het forum, kun je daar ook antwoord verwachten :) ]


  • DaannO
  • Registratie: Juli 2004
  • Laatst online: 27-12-2025
Als ik jou was zou ik je mail adres weg laten :)

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Conditionele print? Als $8 == "Telfort" dan $9 anders $8 oid.

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


  • vanaalten
  • Registratie: September 2002
  • Laatst online: 19:52
awk '{print $(NF-3)}' bestand

  • zAo
  • Registratie: Maart 2002
  • Laatst online: 05-02 21:10

zAo

GPLv2 Fanboy

Anders gewoon `grep 06????????`

:P

Verwijderd

Topicstarter
zAo schreef op zondag 05 februari 2006 @ 20:54:
Anders gewoon `grep 06????????`

:P
er zitten ook vaste nummers bij...:P

Iemand idee?

  • sparks
  • Registratie: December 2002
  • Laatst online: 08-02 09:34
werkt die oplossing van kenneth niet? Dat zou toch moeten werken. Of weet je niet hoe je dat moet toepassen?

  • eghie
  • Registratie: Februari 2002
  • Niet online

eghie

Spoken words!

kenneth schreef op zondag 05 februari 2006 @ 20:35:
Conditionele print? Als $8 == "Telfort" dan $9 anders $8 oid.
Ik denk dat dit te fout gevoelig is. Als er bijvoorbeeld KPN zou komen te staan (noem maar een zijstraat), dan werkt deze methode ook niet.

Ik zou in dit geval gebruik maken van regular expression en daarmee binnen het bestand zoeken. Waarschijnlijk kun je daar met awk wel wat mee.

Dan krijg je dus zoiets (weet niet of het werkt):
code:
1
awk '/regex/ { print $0 }' bestand


Nu moet je nog een goede regex voor telefoon nrs bouwen:
code:
1
(([0-9]{2}-[0-9]{8})|([0-9]{3}-[0-9]{7})|([0-9]{2}-[0-9]{8}))

Zoiets ongeveer. Ook dit niet getest.

[ Voor 28% gewijzigd door eghie op 05-02-2006 21:29 ]


Verwijderd

Niet elegant, maar wel effectief, haal met sed eerst alle woordjes Telfort eruit:


cat bestand |sed "s/Telfort //g" |awk '{print $7}'

  • vanaalten
  • Registratie: September 2002
  • Laatst online: 19:52
Wat is hier eigenlijk mis mee? Print de vierde kolom van achter, dus als er na het telefoonnummer altijd drie kolommen volgen zit je gegarandeerd goed. Ongeacht wat er voor staat.

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Verwijderd schreef op zondag 05 februari 2006 @ 22:17:
cat bestand |sed "s/Telfort //g" |awk '{print $7}'
Mja, dan krijg je (net als terecht werd opgemerkt bij mijn oplossing) een probleem zodra er een andere providernaam komt te staan. De oplossing van vanaalten lijkt me het netst.
En daarbij is dit cat abuse :P

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


  • sparks
  • Registratie: December 2002
  • Laatst online: 08-02 09:34
de variabele NF bevat het aantal velden op de regel, afhankelijk daarvan kun je toch ook veld 8 of 7 printen?
Pagina: 1