Toon posts:

shell-script : uit 2 files zoeken en samenvoegen

Pagina: 1
Acties:
  • 467 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik heb twee files, beide files bevatten gegevens die samengevoegd moeten worden in 1 bestand.
Het nieuwe bestand (bestand3.txt) moet worden:

ServiceName;Applcation;BuerCode

Dit moet gedaan worden m.h.v. een shell-script.
Wie kan een voorbeeldje geven hoe ik dit zou moeten doen.


Voorbeeldbestanden:
-----------------------------
bestand1.txt

BusinessUnit;ByerName;BuyerCode;ServiceName

080_FD;Jansen;dh101;Facility
083_FD;Jansen;dh101;Communications


bestand2.txt

ServiceName;Application

Facility;CMA
Facility;PVCS
Communications;Doors
Communication;Purify
-----------------------------

:P

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Euhms "Wie kan een voorbeeldje geven hoe ik dit zou moeten doen."
Dat is ntuurlijk sowieso niet 'the way to go'.

Over welk platform hebben we het?
Unix? Waarom niet in perl, python of cli php?

Want je moet nu, gok ik, vrij veel met arrays werken en ik denk niet dat shellscript daar de beste oplossing voor is.

Verwijderd

Topicstarter
De tool die we gebruiken ondersteund alleen shell-scriptjes.
Dus helaas perl of iets dergelijks gaat niet.
Verder draaien we het op Unix (Solaris 2.8)

:P

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op maandag 24 juni 2002 10:46 schreef gnoort het volgende:
De tool die we gebruiken ondersteund alleen shell-scriptjes.
Dus helaas perl of iets dergelijks gaat niet.
Dat volg ik nog niet helemaal ;)

perl:
code:
1
2
#!/bin/perl
blablabla

(bash/etc) shell:
code:
1
2
#!/bin/sh
blablabla

Beide is in principe een shellscript.
Als je het in perl kan doen is het echt tig keer makkelijker, maar ook in een geavanceerde shell kan je wel aardig met files en arrays werken.
Zou ik es de bash-programming-howto (oid) opzoeken op http://ldp.nllgg.nl/
bijv deze: http://ldp.nllgg.nl/guides.html#abs

Als je geen bash kan gebruiken maar bijv ksh zou ik bovenstaande link ook es doornemen, ksh lijkt redelijk veel op bash.

Verwijderd

Topicstarter
Op maandag 24 juni 2002 10:50 schreef ACM het volgende:

[..]

Dat volg ik nog niet helemaal ;)

perl:
code:
1
2
#!/bin/perl
blablabla

(bash/etc) shell:
code:
1
2
#!/bin/sh
blablabla

Beide is in principe een shellscript.
Als je het in perl kan doen is het echt tig keer makkelijker, maar ook in een geavanceerde shell kan je wel aardig met files en arrays werken.
Zou ik es de bash-programming-howto (oid) opzoeken op http://ldp.nllgg.nl/
bijv deze: http://ldp.nllgg.nl/guides.html#abs

Als je geen bash kan gebruiken maar bijv ksh zou ik bovenstaande link ook es doornemen, ksh lijkt redelijk veel op bash.
Vanuit de tool kunnen we alleen automatisch een shell-script laten starten.
overige scripts werken hierin niet.
:P

  • Screec
  • Registratie: Mei 2002
  • Laatst online: 03-07-2025
Er bestaat zoiets als een join :).
Doe maar eens man join, en zoek het uit. Ben zeker dat je dit met 1 simpel join commando kan oplossen.
btw: Zet IFS=;
:)

  • Dash2in1
  • Registratie: November 2001
  • Laatst online: 31-08 22:49
zoek eens naar awk, grep, xargs..
overigens is me niet duidelijk op welke manier het uitvoerbestand opgebouwd moet worden.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op maandag 24 juni 2002 10:59 schreef gnoort het volgende:
Vanuit de tool kunnen we alleen automatisch een shell-script laten starten.
overige scripts werken hierin niet.
:P
Maar daar geef je geen antwoord op mijn vraag mee ;)
De tool interpreteert die scripts ook?
Of roept ie alleen in een exec(): 'shellscript.sh argument1 argument2 ...'
?
Zoja
DAN kan je gewoon een perl/whatever oplossing maken.

En trouwens, dat kan sowieso :)
Je kan ook een shellscript maken dat weer een perlscript aanroept, of wat dan ook (c applicatie, noem maar op).

Verwijderd

Topicstarter
Op maandag 24 juni 2002 11:11 schreef ACM het volgende:

[..]

Maar daar geef je geen antwoord op mijn vraag mee ;)
De tool interpreteert die scripts ook?
Of roept ie alleen in een exec(): 'shellscript.sh argument1 argument2 ...'
?
Zoja
DAN kan je gewoon een perl/whatever oplossing maken.

En trouwens, dat kan sowieso :)
Je kan ook een shellscript maken dat weer een perlscript aanroept, of wat dan ook (c applicatie, noem maar op).
Dat laatste kan inderdaad, had ik niet eens aan gedacht.
Hoe zou ik dat met perl kunnen opbouwen ?
Dan zou ik een extra bestandje hebben, maar dat geeft niet zoveel.
:P

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op maandag 24 juni 2002 11:16 schreef gnoort het volgende:
Dat laatste kan inderdaad, had ik niet eens aan gedacht.
Hoe zou ik dat met perl kunnen opbouwen ?
Dan zou ik een extra bestandje hebben, maar dat geeft niet zoveel.
:P
file1 openen
regel voor regel inlezen en splitten/exploden op ; en achteraan een array plakken (evt in een hash-array en dan gelijk de goede key erbij zetten)

file2 openen
regel voor regel inlezen en splitten/exploden op ; en achteraan een array plakken (evt in een hash-array en dan gelijk de goede key erbij zetten)

array's samenvoegen (foreach etc)

file3 openen
de boel schrijven

Dat is wat je globlaal nodig hebt, ik ben geen perlheld, maar zo moeilijk lijkt dit me niet :)

  • Screec
  • Registratie: Mei 2002
  • Laatst online: 03-07-2025
Waarom het 'ingewikkeld' via perl doen, als je dit gewoon met 1 enkel join commando kan oplossen??
Tja, sommige hebben het liever ingewikkeld? :P

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 18:31
Op maandag 24 juni 2002 11:20 schreef Screec het volgende:
Waarom het 'ingewikkeld' via perl doen, als je dit gewoon met 1 enkel join commando kan oplossen??
Ik wilde 't net zeggen. ;)

Join lijkt me de enige serieuze way-to-go.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op maandag 24 juni 2002 11:30 schreef Soultaker het volgende:
Join lijkt me de enige serieuze way-to-go.
Idd, man/info join lijkt wel nuttig.

Tenzij er meerdere joins nodig zijn per regel van A of B... (dus een carthetisch product of iets van dien aard), dat lijkt ie niet te kunnen.
Pagina: 1