Toon posts:

[sed] regular expression-madness

Pagina: 1
Acties:

Verwijderd

Topicstarter
Tja,

ik ben hier met iets bezig dat heel simpel zou moeten zijn :(

code:
1
# FILE;micro104;DEPOT100;20041220;141306;7;


Hieruit wil ik 'micro104' halen...

wat ik reeds geprobeerd heb (met alle mogelijke varianten is:
Sed:
1
head -n1 CDNN_4711012345.txt | sed -n -e 's/# FILE;(.*);depot/i/'


Maar niets wilt gaan :S... Kan er mij iemand misschien een handje helpen hiermee?


Thx!

Verwijderd

Topicstarter
Stupid me :S

Sed:
1
sed -n -e '2,$d' -e 's/^# FILE;\(.*\);DEPOT.*/\1/ip' CDNN_4711012345.txt

  • Surehand
  • Registratie: Februari 2003
  • Laatst online: 14-05 21:53
Waarom gebruik je niet gewoon cut? (Er van uitgaande, dat de ; een scheidingsteken is, en je altijd het tweede veld wilt hebben natuurlijk)

code:
1
cut -f 2 -d \; CDNN_4711012345.txt

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 15-05 06:45
Bij cut heb je ook de voorwaarde nodig dat alle regels altijd correct gevormd zijn. (Met sed kun je dat controleren, omdat een regel als bijvoorbeeld "ik zeg; dit is niet goed" niet aan de reguliere expressie voldoet.)

  • Sendy
  • Registratie: September 2001
  • Niet online
Je weet toch helemaal niet wat de TS bedoeld? Hij zegt dat hij 'micro104' eruit wil vissen; dan lijkt me een regexp van /micro104/ wel voldoende. Als hij het veld tussen "FILE" en "DEPOT" wil halen dan heeft hij zelf al een oplossing gemaakt. Als hij het tweede veld wil hebben kan-ie beter cut gebruiken. ;)

  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

Als alle regels in dat bestand hetzelfde formaat hebben kun je net zo goed awk gebruiken:
code:
1
cat CDNN_4711012345.txt | awk -F \; '{print $2}'

Nu met Land Rover Series 3 en Defender 90


  • Sendy
  • Registratie: September 2001
  • Niet online
En zo kan je natuurlijk nog 20 tooltjes aanraden ;) Mij lijkt het toch slimmer om de beste tool voor de job te gebruiken, en als je moet kiezen tussen awk en cut voor dezelfde taak, dan zou ik cut nemen, die binary is namelijk een factor 10 kleiner ;) (en sed is een factor 2 groter dan cut)
Pagina: 1