Find and replace… ali samo parcijalno u tekstu
Posted: 28 May 2011 09:12 AM
Sr. Member
Avatar
RankRankRankRank
Total Posts:  1786
Joined  2005-05-08

Potreban mi je, možda ne toliko program koliko metod, da odradim Find and replace ali samo u određenim delovima teksta.

Konkretno šta mi treba - imam neki dugačak tekst sa jedno milion stringova poput: ”abc 123 def 456”. Pokušavam da ovo pretvorim u ”abc123def456” ali tako da ne radim ručno niti da sa druge strane ubijem svaki razmak u tekstu, neselektivno.

Recimo, u TextWrangleru pomoću grepa mogu tačno da nađem svaki occurance ovoga što hoću da menjam ali kako da mu ubijem samo space?

 Signature 

10 HOME
20 SWEET
30 GO TO 10

Profile
 
Posted: 28 May 2011 02:19 PM   [ # 1 ]
Sr. Member
Avatar
RankRankRankRank
Total Posts:  535
Joined  2010-06-20

nisam odavno koristio, niti je imam na prisutnom sistemu, ali cini mi se da coda to moze da radi sa selekcijom.

takodje, ako zelis samo deo teksta, postoji i prostiji nacin….
kopiras taj deo u novi textedit, odradis tamo find acd1 def2 replace sa acd1def2 i kopi paste nazad xD

Profile
 
Posted: 28 May 2011 02:58 PM   [ # 2 ]
Sr. Member
Avatar
RankRankRankRank
Total Posts:  1850
Joined  2006-11-24

Taj Čodin pametni replace uopšte ne radi dobro, bar ne kad znaš regularne izraze i kako se sa njima radi.

Enivejz, Smultron/Fraise u ruke (nađi legalnu free/staru verziju); cmd+shift+f / Use regular expressions - pa vitlaj.
Ako umeš da izgrepuješ tačno šta ti treba, valjda umeš i da napraviš replace pattern? (znaš za upotrebu $1 $2 ...?)
Ako ne znaš, bač mi sempl pa ću ti poslati patterne nazad.

 Signature 

Carnival of Flesh

Profile
 
Posted: 28 May 2011 06:07 PM   [ # 3 ]
Sr. Member
Avatar
RankRankRankRank
Total Posts:  1786
Joined  2005-05-08

E, super je što čujem da uopšte radi. Ako nije problem ovde odradimo primer, možda nekom zatreba u budućnosti?

Grep koristim u TextWrangleru, a ako mora Smultron - imam i to 😛

Nemam iskustva sa search patternima, baš me interesuje da li se mogu primeniti na ovom mom konkretnom slučaju.

Evo recimo jedan jednostavniji primer, formatirani brojevi u .vcf fajlu:
[code:1]+971 50 4640 194[/code:1]

Dakle, kada u Find dijalogu odem na
[code:1]grep \d\d\d \d\d \d\d\d\d \d\d\d[/code:1]

uredno nađem svako mesto na kome se javlja npr.
[code:1]+971 50 4640 194[/code:1]

Sad, zapeo sam što ne znam kako tačno da izbacim samo space u samo tim stringovima, kao što rekoh.

Ovo je jednostavniji primer, imam i neke .xls eksporte u kojima ima svakakvog komplikovanijeg zla. Ali nadam se da ću s tim moći da se izborim ako ovo naučm kako se radi.

 Signature 

10 HOME
20 SWEET
30 GO TO 10

Profile
 
Posted: 28 May 2011 06:40 PM   [ # 4 ]
Sr. Member
Avatar
RankRankRankRank
Total Posts:  1850
Joined  2006-11-24

TW ne koristim, ne znam kakav replace ima. Sa Smultronom će ti ovo raditi.

Search pattern:
[code:1](\d{3}) (\d{2}) (\d{4}) (\d{3})[/code:1]
Replace pattern:
[code:1]$1$2$3$4[/code:1]

Post edited by: Dachaz, at: 2011/05/28 18:41

 Signature 

Carnival of Flesh

Profile
 
Posted: 28 May 2011 08:43 PM   [ # 5 ]
Sr. Member
Avatar
RankRankRankRank
Total Posts:  7587
Joined  2005-04-28

Ovo bi trebalo da radi i u BBEditu, pa samim tim i u TextWrangleru.

 Signature 

ACSP 10.10 - ACSP 10.9 - ACA 10.8 Mac Management - ACSP 10.8 -  ACSP 10.7 - ACSA 10.6

Profile
 
Posted: 28 May 2011 09:02 PM   [ # 6 ]
Sr. Member
Avatar
RankRankRankRank
Total Posts:  1786
Joined  2005-05-08

Uspeo sam. Puno ti hvala!

Smultron nije radio, ne znam zašto, prozor je samo izbacivao grešku u status baru na dnu. Proverio sam sa nekim običnim terminima i radilo je, posle se zezao sa zagradama ali i dalje nije htelo. Verovatno ga nije kapirao kao grep, ne znam zašto.

Međutim, stari dobri TextWrangler je odradio posao perfektno, pa kome bude trebalo nešto slično u budućnosti samo neka obrati pažnju da ako recimo napravi search pattern sa svojim subpatternima (u običnim zagradama); kao npr:

[code:1](\d{3}) (\d{2}) (\d{4}) (\d{3})[/code:1]
subpatterni se redom navode u replace polju na sledeći načn:

[code:1]\1\2\3\4[/code:1]

TW dakle ne provaljuje ovaj replace pattern sa $, umesto toga ide \(backslash).

To je sve detaljno objašnjeno u User Manualu, Ch.8 Searching with Grep.

Fala još jednom Dachaz!

edit: izgleda da se ne vidi backslash van code taga…

Post edited by: DS_Store, at: 2011/05/28 21:09

 Signature 

10 HOME
20 SWEET
30 GO TO 10

Profile
 
Posted: 29 May 2011 12:50 AM   [ # 7 ]
Sr. Member
Avatar
RankRankRankRank
Total Posts:  1850
Joined  2006-11-24

Smultron može da neće ako:
1. Nisi upalio Advanced Find nego običan Find
2. U Advanced Find nisi čekirao ‘use regular expressions’

Nebitno, bajtno je da si ti odradio šta ti treba.

 Signature 

Carnival of Flesh

Profile