Sida 3 av 4

Re: Att byta mellanslag mot tab

Postat: 19 mars 2013, 20:13:37
av Krille Krokodil
En summering av syntaxen för Perl regular expressions: http://www.cs.tut.fi/~jkorpela/perl/regexp.html

Re: Att byta mellanslag mot tab

Postat: 19 mars 2013, 20:18:01
av TomasL
Bara ett litet problem, jag får en lista ur mitt CAD program där all data är separerad med mellanslag.
Pick and place maskinen får då inget vettigt ur listan, den ska gå att få in i ett kalkylark (Excell)
Du kan ju alltid importera det i Excel, och använda mellanslag som fältseparator, sedan kan du exportera det som tab-separerad lista.
inga konstigheter.
Excel klarar att läsa textfiler med vilken fältseparator som helst.
Finns ingen orsak till att krångla till det med en massa konstiga script mm.

Re: Att byta mellanslag mot tab

Postat: 19 mars 2013, 20:27:26
av Nerre
Jo, om det ska automatiseras är det enklare med script.

Re: Att byta mellanslag mot tab

Postat: 19 mars 2013, 20:32:11
av TomasL
Eftersom det ändå skall in i Excel, så finns det ingen anledning att göra något annat.

Re: Att byta mellanslag mot tab

Postat: 19 mars 2013, 22:06:43
av Maalobs
prototypen skrev:Bara ett litet problem, jag får en lista ur mitt CAD program där all data är separerad med mellanslag.
Pick and place maskinen får då inget vettigt ur listan, den ska gå att få in i ett kalkylark (Excell)
Läser pick-and-place maskinen den tab-separerade filen, eller läser den en Excel-fil?
Jag tolkade det som att maskinen kräver tab-separerad fil för korrekt inläsning, och att Excel i ett nuvarande mellansteg används för manuell redigering innan filen är redo att användas i maskinen.

Re: Att byta mellanslag mot tab

Postat: 19 mars 2013, 22:49:22
av prototypen
Hur maskinen fungerar vet jag inte, den är inte min och står 6mil bort.
Tillverkaren tar in min fil i Excell och granskar den, där går det att ändra kollumnsepareringen men då jag har mellanslag i mina komponentnamn så kapas dessa och hamnar i olika kolumner. Och resten förskjuts då ett steg så X och Y koordinaterna hamnar lite hur som helst beroende hur många mellanslag jag har i namnet.

Att byta namn går inte då komponenterna monteras in i varje projekt, inte att de hämtas ur biblioteket när man tar fram ett projekt.

För att byta till namn utan mellanslag så får jag i stort sett börja om med en ny layout.

Vad händer om man sätter mellanslag som separator i Excell och det är 10 mellanslag mellan mina dataposter? Hoppar det då 10 kolumner?

Om data vore separerade med tab som väl är det normala så skulle allt vara frid och fröjd

Re: Att byta mellanslag mot tab

Postat: 19 mars 2013, 22:54:21
av prototypen
Det är så sällan jag håller på med kalkylark men jag tror att mitt kan byta separator, ska kolla i morgon men med många mellanslag så kommer det väl att bli lite konstigt.

Protte

Re: Att byta mellanslag mot tab

Postat: 19 mars 2013, 23:17:11
av Maalobs
Du fick ett par kommandorader tidigare ikväll att välja mellan för att antingen byta ut flera mellanslag i följd till ett tab-tecken, eller att byta ett fast antal mellanslag till ett tab-tecken.
De raderna går att köra direkt i Kommandotolken i OS X, byt ut filnamnen till de riktiga filernas namn bara.
Det är bara oneliners, inga script är nödvändiga för så enkla operationer.

Re: Att byta mellanslag mot tab

Postat: 19 mars 2013, 23:19:13
av TomasL
Protte, kan du skicka mig en fil?

Re: Att byta mellanslag mot tab

Postat: 19 mars 2013, 23:57:16
av sodjan
> men då jag har mellanslag i mina komponentnamn så kapas dessa och hamnar i olika kolumner.

Nej nej nej, så fungerar det inte.
Eller ja, så fungerar det *OM* du har mellanslag valt som separator!
Du ska klicka bort *alla* olika separatorer och istället markera fasta positioner.
Du kan självklart inte ha mellanslag som separat eftersom du har mellanslag i själva datat!

> Det är så sällan jag håller på med kalkylark men jag tror att mitt kan byta separator,

Ja, det kan man. Och man kan markera fasta positioner för brytningen istället.
Och det är *DET ENDA* som faktiskt fungerar för att importera din fil i Excel.

Om du hade vetat det du vet nu så hade du så klart sett till att undvika
mellanslag som en del av värderna i kollumnerna. :-)

Retroperra> Fast jag får det att funka så bra

Även med dessa poster ? :

Kod: Markera allt

BAS 32L SOD80                          #73   1785   -6109    ????   \F.BAS 32L SOD80 TOP       
BAS 32L SOD80                          #74   1785   -6809    ????   \F.BAS 32L SOD80 TOP       
BAS 32L SOD80                          #75   1785   -6609    ????   \F.BAS 32L SOD80 TOP       
Notera att ett fält ("LIBRARY") slutar med "...SOD80" och nästa ("SIDE") börjar med "TOP..."
och att det endast är *ett* mellanslag mellan dessa fält. Alltså spricker metoden att
leta efter 2 mellanslag (eller fler) direkt här. Den metoden kommer att betrakta dessa
två fält som ett enda fält...

Re: Att byta mellanslag mot tab

Postat: 19 mars 2013, 23:59:05
av swesysmgr
Om du har tillgång till MS Word kan du enkelt lösa det med den vanliga sök och ersätt funktionen:

Klicka i "Använd mönstermatchning".
Sök efter: {2;}
Ersättmed: ^t

Det skall alltså stå ett blanksteg före måsvinge-2-semikolon-måsvinge

Formeln innebär att Word söker efter två eller fler förekomster av tecknet före måsvingarna (i det här fallet blanksteg) och ersätter det med ett tabtecken (kodat ^t)

Fler exempel på vad man kan söka efter och olika specialtecken finns om du trycker på "Special"-knappen längst ner.
Wordsök.png

Re: Att byta mellanslag mot tab

Postat: 20 mars 2013, 01:57:47
av sodjan
OK, en gång till... :roll:
Det finns fall där det är *ett* mellanslag mellan fälten.
*Ingen* mönstermatchning fixar det.

Re: Att byta mellanslag mot tab

Postat: 20 mars 2013, 02:45:29
av Maalobs
Det är inget konstigt alls, det är regular expressions.
Du anger ett tecken, därefter en quantifier som gäller för tecknet innan, vilket är ett mellanslag i det här fallet.
Quantifiern {2,} betyder "minst två, max oändligt". Motsvarande syntaxen i just Word verkar vara {2;}.
Det lämnar alla enstaka mellanslag orörda.
Sedan använder du det inuti en substitution till ett enda tab-tecken, då kollapsas alla sekvenser av "2 eller flera mellanslag" till ett tab-tecken.

Här är ett utdrag ur den relevanta regex-dokumentationen som följer med Perl:

Kod: Markera allt

Quantifiers
 The following standard quantifiers are recognized:

     *           Match 0 or more times
     +           Match 1 or more times
     ?           Match 1 or 0 times
     {n}         Match exactly n times
     {n,}        Match at least n times
     {n,m}       Match at least n but not more than m times
Regex borde inte vara nyheter för en oldtimer som du; grep, sed och awk har ju funnits i bagaget hos un*x sedan 70-talet.

Re: Att byta mellanslag mot tab

Postat: 20 mars 2013, 07:49:56
av TomasL
Fick en fil av Protte, öppnade den i Excel, ficka allt i snygga kolumner, sparade den (Excel har tab-separerat format som default), och filen är troligen fullt användbar.
Vi får se vad Protte säger när han fått filen.
Att scripta en sån här engångsgrej (ja det är engångsgrej, jag tror knappast Protte genererar så många olika kort, så man inte kan göra det manuellt) är fullständigt meningslöst.

Re: Att byta mellanslag mot tab

Postat: 20 mars 2013, 09:51:53
av Nerre
prototypen skrev: Tillverkaren tar in min fil i Excell och granskar den, där går det att ändra kollumnsepareringen men då jag har mellanslag i mina komponentnamn så kapas dessa och hamnar i olika kolumner. Och resten förskjuts då ett steg så X och Y koordinaterna hamnar lite hur som helst beroende hur många mellanslag jag har i namnet.
Då gör tillverkaren fel.
dialog1.JPG
dialog2.JPG
Nu efteråt ser jag att siffrorna i rubriken är teckenposition och längd för fälten, det stämde inte riktigt med testfilen som jag gjorde baserat på det som låg i nåt inlägg tidigare i filen.