Arcus Skrevet 8. mars 2013 Del Skrevet 8. mars 2013 (endret) Har en utfordring som er som følger. Har en telefonliste fra excel (eksportert til csv (faste felt, men variabel antall oppføringer) som jeg på en enkel måte må konvertere til en noenlunde formatert text fil. Telefonliste.csv Name;Mobile;Home;Other Navn 1;44444444;77777777; Navn 2;55555555;66666666;66655544 Navn 3;;44446666; Navn 4;45454545;;65656565 Navn 5;;43343434; til sånn noenlunde formatert telefonliste.txt Har fått forståelse for at perl den letteste måte å gå. Et lite skript som lar deg kjøre konverter.pl telefonliste.csv og output blir til telefonliste.txt Har aldri rørt perl, men hvis noen har forslag på et scipt setter jeg stor pris på det. Hvis ikke blir det selvstudie i helgen Endret 8. mars 2013 av Arcus Lenke til kommentar
Lycantrophe Skrevet 8. mars 2013 Del Skrevet 8. mars 2013 Perl er veien. Gi meg 5min. Lenke til kommentar
Lycantrophe Skrevet 8. mars 2013 Del Skrevet 8. mars 2013 (endret) #! /usr/bin/perl use strict; use warnings; while( my @line = split ';', <> ) { format output = @<<<<<<<<<< @<<<<<<<<<< @<<<<<<<<<< @<<<<<<<<<< @line . $~ = 'output'; write; } Output: lycantrophe@tesla:~$ perl csv.pl < comma.txt navn tlf 10 14 tolf nevn 11 12 Edit: Hahaha, diskusjon er så brukket. Hvis formateringen ser borked ut er det d.no. Endret 8. mars 2013 av Lycantrophe Lenke til kommentar
Lycantrophe Skrevet 8. mars 2013 Del Skrevet 8. mars 2013 (endret) Om du skal ha med headlines (og et par "forenklinger"): #!/usr/bin/perl use strict; use warnings; format headline = Name Mobile Home Other . $~ = 'headline'; write; format content = @<<<<<<<<<< @<<<<<<<<<< @<<<<<<<<<< @<<<<<<<<<< @_ . $~ = 'content'; write while( @_ = split ';', <> ); Output: lycantrophe@tesla:~$ perl csv.pl < comma.txt Name Mobile Home Other navn tlf 10 14 tolf nevn 11 12 Bruk: perl script.pl < input.csv > output.txt Vil du heller ha filhåndtering i scriptet lar det seg gjøre det og. Endret 8. mars 2013 av Lycantrophe Lenke til kommentar
Paull Skrevet 8. mars 2013 Del Skrevet 8. mars 2013 Om du har PowerShell (som jeg tror basert på Notepad++ screenshottet) kan du bruke Import-Csv -Delimiter ";" .\Telefonliste.csv | Out-File Telefonliste.txt Lenke til kommentar
Lycantrophe Skrevet 8. mars 2013 Del Skrevet 8. mars 2013 (endret) Det formatterer ikke output, gjør det? Det samme i bash: column -t -c 4 -s ';' input.txt > output.txt Endret 8. mars 2013 av Lycantrophe Lenke til kommentar
Paull Skrevet 8. mars 2013 Del Skrevet 8. mars 2013 Har ikke eksplisitt angitt det, men default formatting er table, så det blir seende ganske likt ut. Prøvde å paste inn output, men som du sa tidligere... Its f'ed! Lenke til kommentar
Paull Skrevet 9. mars 2013 Del Skrevet 9. mars 2013 (endret) Okei, pliiz ikke ta det følgende som en pissing contest, jeg syns bare det er ganske kult fra et programmeringssynspunkt: Hver linje i filen via import-csv blir et eget objekt med automatiske properties og metoder, f.eks vil hvert objekt i dette tilfellet få en Name property og en Home property. Greit nok, men det som er nice er at man da kan sende objektene videre via gode gamle pipes: Import-Csv -Delimiter ";" .\Telefonliste.csv | where {$_.Name -Match "Lyc*} som da vil gi hver entry som har en string i Name-kolonnen som starter med "Lyc". Siden "entryen" er objektet, så vil den ha alle propertyene fra den originale raden. Igjen, vil ikke tråkke på tær, bare gi et innspill til hvorfor jeg personlig liker PowerShell, og syns det er nice fra et get-sh**-done perspektiv Endret 9. mars 2013 av Paull Lenke til kommentar
Lycantrophe Skrevet 9. mars 2013 Del Skrevet 9. mars 2013 (endret) grep -e ^Lyc input.txt | column -t -c 4 -s ';' > output.txt lyc'd Edit: Dersom man skal ha noe annet enn første rad (f.ex andre) awk '$1 ~ /lyc/ {print $0}' comma.txt | column -t -s ';' Dette gir deg regex også, mulig PS har det. Endret 9. mars 2013 av Lycantrophe Lenke til kommentar
Paull Skrevet 9. mars 2013 Del Skrevet 9. mars 2013 Ja, -Match er regex. Kom over en litt moro sak i PS3, Out-GridView: import-csv -Delimiter ";" .\telefonliste.csv | Out-GridView gir nesten full circle, like før man er tilbake i Excel igjen Lenke til kommentar
snippsat Skrevet 9. mars 2013 Del Skrevet 9. mars 2013 (endret) Har fått forståelse for at perl den letteste måte å gå. Hmm det kan diskuteres,selv om @Lycantrophe er glad for at det endelig kommer et Perl spørsmål Blir med jeg og bare for gøy,tar en med Python. Kunne nok ha kortet ned koden en del,men her er formatering nøyaktig som vist på bildet. Tar lenge fra lengste tekst og formatere tekst etter max lengde. Bruker Python sin nye string formatting som er kraftig vist her av Gribouillis i linken. Som info har Python bygd inn CSV module som kunne vært brukt. Diskusjon er broken. Ja det er helt klart,så man får bruke andre sider når man skal vise kode med formatering. http://pastebin.com/tnXYVX0t Endret 28. mai 2013 av SNIPPSAT Lenke til kommentar
Arcus Skrevet 10. mars 2013 Forfatter Del Skrevet 10. mars 2013 Takk for alle innspill. Skal leke litt med dette. Men ser at man bør lese seg opp på powershell og litt perl uansett. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå