Nieuws:

We zijn er weer.

Na lange tijd van afwezigheid zijn we er weer  :laugh:
We hebben alle wachtwoorden gereset, je oude wachtwoord werkt niet meer.Je moet via het "wachtwoord vergeten"-linkje je wachtwoord resetten. Je krijgt hiervoor een mailtje op het adres dat je bij ons geregistreerd hebt.

De komende tijd zijn we nog druk bezig om de rest van de site op te bouwen, dus het kan zijn dat sommige onderdelen (tijdelijk) niet werken.

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: vervangen komma door een punt met voorwaarde  (gelezen 625 keer)

Offline nahjo

  • Lid
  • Steunpunt: Nee
vervangen komma door een punt met voorwaarde
« Gepost op: 2017/12/30, 18:39:33 »
Hoi,
zit wat te scripten maar heb het gevoel dat iets wel wat beter kan maar ik kan het op het net niet vinden.
In een bestand wil ik de combnatie komma + cijfer vervangen door een punt + cijfer (conversie van een getal naar US formaat). Ik heb het volgende in het script staan
sed -i -e "s/,0/.0/g;s/,1/.1/g;s/,2/.2/g;s/,3/.3/g;s/,4/.4/g;s/,5/.5/g;s/,6/.6/g;s/,7/.7/g;s/,8/.8/g;s/,9/.9/g"maar heb het gevoel dat het wel eenvoudiger kan.
Ergo eigenlijk zou je cijfer+comma+cijfer moeten vervangen door cijfer+punt+cijfer maar ja dan gaat het wel een hele lange opdracht worden  ^-^
Iemand een goede tip?

LM18.3xfce Xubuntu 18.04

Offline MKe

  • Lid
  • Steunpunt: Nee
Re: vervangen komma door een punt met voorwaarde
« Reactie #1 Gepost op: 2017/12/30, 21:32:57 »
Als volgt:

sed "s/\(,\)\([[:digit:]]\)/\.\2/g"
Ik maak hier 2 groepen in het match patroon met behulp van haken. Ik gebruik '[[:digit:]]' om alle getallen te matchen.
Met de '\2' in de vervangingstekst geef ik de 2e groep aan, in dit geval het getal.
« Laatst bewerkt op: 2017/12/30, 21:38:43 door MKe »
Mijn blokkendoos blog: http://mke21.wordpress.com/

Offline nahjo

  • Lid
  • Steunpunt: Nee
Re: vervangen komma door een punt met voorwaarde
« Reactie #2 Gepost op: 2017/12/30, 22:28:19 »
Super bedankt!
Het werkt als een tierelier en is een stimulans om er weer eens goed in te duiken  :)
LM18.3xfce Xubuntu 18.04

Offline MKe

  • Lid
  • Steunpunt: Nee
Re: vervangen komma door een punt met voorwaarde
« Reactie #3 Gepost op: 2017/12/31, 10:27:05 »
Het is nogal onleesbaar niet? Regex is super krachtig, maar een draak van een syntax. Iig succes ermee.

Offline nahjo

  • Lid
  • Steunpunt: Nee
Re: vervangen komma door een punt met voorwaarde
« Reactie #4 Gepost op: 2017/12/31, 11:30:05 »
Het is nogal onleesbaar niet? Regex is super krachtig, maar een draak van een syntax. Iig succes ermee.
Als je er mee bezig bent is het nog te volgen maar ik kan mij voorstellen dat als je zoiets tegenkomt in een script zonder commentaar dat je eerst wel even met je ogen zit te knipperen.
Nogmaals bedankt voor het zetje in de goede richting.

Heb het toegepast in een scriptje om .csv bestanden wat gemakkelijker te openen in LO Calc. Het stoorde mij dat je met Excel gewoon met klikken kan openen en bij LO steeds die conversie vragen moest afhandelen. Een enkele keer is dat niet zo'n probleem maar tientallen keren per dag gaat wel irriteren.
Er is een util (csv2ods) in linux maar daar ging het niet lekker met de getallen omdat het csv bestand een komma als decimaal teken heeft en een semicolon als veld scheiding.
Dus eerst het decimaal teken wijzigen in een punt (alleen bij getallen) en daarna de conversie naar .ods.
#!/bin/bash
# convertcsv2ods
# converteren van .csv bestand naar .ods
# benodigde software LibreOffice en python-odf
# sudo apt-get install python-odf

# opdracht convert2ods <csv bestand>

FILEIN=$1
if [ -f "$FILEIN" ] ; then
    FILEOUT=${FILEIN%.*}".ods"
    FILETMP=".convertcsv2ods.tmp"
    cp "$FILEIN" -T "$FILETMP"
    sed -i -e "s/\([[:digit:]]\)\(,\)\([[:digit:]]\)/\1\.\3/g" "$FILETMP"
    csv2ods -i "$FILETMP" -o "$FILEOUT" -d ";" -t Blad1 -&& xdg-open "$FILEOUT"
    rm -f "$FILETMP"
fi
exit
« Laatst bewerkt op: 2017/12/31, 14:19:32 door nahjo »
LM18.3xfce Xubuntu 18.04

Offline jvecht

  • Lid
    • Just Vecht
  • Steunpunt: Ja
Re: vervangen komma door een punt met voorwaarde
« Reactie #5 Gepost op: 2017/12/31, 11:48:06 »
Geweldig zeg. Voor een script aanpassen draai ik mijn hand niet om, maar in dit soort gevallen blijf ik er wel vanaf!

Prachtig gedaan!

groet,

Just
GIMP bundel 2017  25 cursussen met geweldig mooi oefenmateriaal. Lekker lezen of er wat van opsteken!
  Boekje "Werken met Xubuntu" 4000+ downloads!
     Het Helpmij Magazine December 2018