Is er iemand die mij kan helpen met GREP?
5 augustus 2010 - 10:37   
geplaatst door: HansG
Beste mensen,

Ik probeer me te verdiepen in GREP. Zo op het oog een geweldige productie/opmaakaanvulling, alleen zo onbegrijpelijk als wat. Althans voor mij!
Mijn vraag: Ik maak redelijk wat boeken op en daar wil ik een (klein) deel van automatiseren. Met name de aanwijzingen die de redactie plaatst. Een ervan is bijvoorbeeld

[kk]hier de tekst die kleinkapitaal moet worden[kkx]

Zoals hierboven krijg ik het keurig aangeleverd en tot nu toe maakte ik handmatig(!) de teksten tussen de accolades kleinkapitaal en verwijderde de  [kk] [kkx].
Maar hoe meer het voorkwam, hoe meer werk.
Dus terug naar GREP. IK ben er inmiddels achter hoe ik de teksten kan vinden. De vindtekst is willekeurig en staat in deze formule tussen de [kk] [kkx]

[kk].+\[kkx]

Nu het volgende. Ik wil dat de gevonden tekst OT kleinkapitaal wordt en dat [kk] [kkx] worden verwijderd. Ik kan wel alles wijzigen in keinkapitaal maar weet niet hoe ik (automatisch) [kk] [kkx] moet verwijderen (Ja, handmatig met zoek en vervang, maar daar wil ik nu juist vanaf!).

Misschien is er iemand die meer bekend is met GREP. Ik houd me aanbevolen.

Is er iemand die mij kan helpen met GREP?
5 augustus 2010 - 11:20    reactie #1
geplaatst door: Pugnax
Zomaar een paar vragen/opmerkingen:
- In welk bestandsformaat zijn de teksten?
- Automator al geprobeerd? Kan ook weer grep aanroepen.
- Python kan ook tekst manipuleren.
Is er iemand die mij kan helpen met GREP?
5 augustus 2010 - 11:26    reactie #2
geplaatst door: macpeterr
Hans,

Grep is van oorsprong een unix/bsd command line instructie. Zo ver ik weet kan grep alleen zaken filteren en niet vervangen. Er zijn echter een hoop verschillende implementaties van grep. Daarnaast vermoed ik dat je niet de commandline in vi je boeken opmaakt, gokje indesign ? Als het regexp substitutie pattern ondersteund kan onderstaan Misschien op weg helpen...

s/[kk](+.)[kkX]/$1/

Peter
Is er iemand die mij kan helpen met GREP?
5 augustus 2010 - 13:06    reactie #3
geplaatst door: Cailin Coilleach
Wat hij bedoelt is inderdaad regular expressions. In een aantal opmaakpakketten wordt dat echter ook weer GREP genoemd :)
Is er iemand die mij kan helpen met GREP?
5 augustus 2010 - 13:12    reactie #4
geplaatst door: Goodheart
grep is bedoeld om teksten te doorzoeken m.b.v REgular exPressions. Als je vanaf de commandline dingen wil verwijderen kun je beter sed gebruiken, de Streaming EDitor. Weet niet of je die ook vanuit InDesign etc. kunt aansturen.
Is er iemand die mij kan helpen met GREP?
5 augustus 2010 - 13:28    reactie #5
geplaatst door: Pugnax
sed is inderdaad een betere optie, awk ook.
Maar ik denk dat het commando tr al genoeg. Kijk daar maar eens naar.
Is er iemand die mij kan helpen met GREP?
5 augustus 2010 - 18:19    reactie #6
geplaatst door: macpeterr
Maar als het in indesign is kan het ook met Grep. De vraag is welke tool wordt er gebruikt.. Hans ?
Peter
Is er iemand die mij kan helpen met GREP?
5 augustus 2010 - 18:37    reactie #7
geplaatst door: Carlito
en welke versie van Indesign dan, is ook wel belangrijk
Is er iemand die mij kan helpen met GREP?
5 augustus 2010 - 19:08    reactie #8
geplaatst door: bertvanderveen
Ik weet zeker dat het met een combinatie van scripten en GREP kan -- misschien leg je beter je vraag voor aan de script-guru's, bijv. het desbetreffende Adobe InDesign Forum:

http://forums.adobe.com/community/indesign/indesign_scripting


Toevoeging: Hier bijv. hoe je iets verandert in 'niets':
http://forums.adobe.com/thread/692159?tstart=0

(Bewerkt door bertvanderveen om 19:13, 5-08-2010)

Bert Vanderveen [...]
+++ Applegebruiker sinds 1989 (van System 6 via OSX naar macOS 15)
Is er iemand die mij kan helpen met GREP?
5 augustus 2010 - 20:02    reactie #9
geplaatst door: macpeterr
Als het nu in Indesign CS4 is kun je via Menu -> Edit -> Find/Change met de GREP methode de codes verwijderen en de stijl aanpassen. Verwijderen van de codes kan door in het "Find what:" veld \[kk\](.+)\[kkX\] in te vullen. Door in "Change to:" $1 in te vullen wordt bij
het selecteren van "change all" bijv de tekst [kk]Deze tekst moet worden aangepast[kkX] gewijzigd naar Deze tekst moet worden aangepast. De aanpassing van het format kan met de overige opties in het window.

Korte uitleg van de reguliere expressie; Deze zoekt naar een tekst beginnend met [kk] gevolgd door 0 of meer tekens en afgesloten met [kkX]. De ronde haakjes in de expressie zorgen dat de werkelijke tekst tussen deze haakjes worden opgeslagen in een variabele, hierbij is $0 altijd de gehele string en $1 de eerste match , $2 de derde etc.

Zoals al eerder opgemerkt dit zijn reguliere expressies en heeft weinig met grep te maken, afgezien van het feit dat bepaalde versies van (e)grep gebruik kunnen maken van regexp patronen om te zoeken, maar niet om te vervangen.

suc6
Peter

Peter
Is er iemand die mij kan helpen met GREP?
5 augustus 2010 - 21:17    reactie #10
geplaatst door: HansG
Ik lees net de reacties na vanochtend mijn vraag te hebbe gesteld, Wat een hoop respons! Ben erg blij met het meedenken.
Ik ben inderdaad vergeten te vermelden dat ik in InDesign CS3 werk.
Daarin lijkt het dat met grep op dezelfde manier gewerkt kan worden als met zoeken. Dus zoeken én vervangen. Die mogelijkheid wordt in het panel gesuggereerd.
Daardoor waarschijnlijk op het verkeerdde been gezet.
Het zoeken gaat inderdaad goed maar vervangen (nog) niet.
Ik ga een aantal suggesties uitproberen en laat weten of ik verder kom.

@ bertvanderveen: De InDesign User Group site ligt er al dagen uit! Althans de nederlandse. Daarvan weet ik dat er een grep-adept zit/zat.
Ik ga jouw link proberen.

Is er iemand die mij kan helpen met GREP?
5 augustus 2010 - 22:08    reactie #11
geplaatst door: HansG
Bij deze laat ik weten dat ik eruit ben!
Ik ben met name met de oplossingen van macpeterr aan de slag gegaan.
Voldeed niet helemaal. Zijn suggestie vindt één eerste [kk] tot en met de laatste [kkX] inclusief alles wat er tussen stond, terwijl de codes 4x voorkwamen.
Maar met een paar aanpassingen ging het uiteindelijk werken.
Ik heb het nog niet op een compleet boek toegepast, maar even gewerkt met een volle A4 pagina plaatsaanduidingstekst met 6 codes erin verwerkt.
Die check werkte perfect.

De oplossing is;
in het GREPzoekveld:   \[kk](.+?)\[kkX\]

en in het vervangveld:   $1

Vindt alles en laat de codes [kk] en [kkX] weg.
Allen bedankt voor het meedenken.

(Bewerkt door HansG om 9:28, 9-08-2010)