Menu

27 augustus 2013

OS X Terminal: Tekst vervangen in meerdere documenten

terminalDe meeste OS X gebruikers zullen niet vaak de Terminal applicatie starten. Op zich is dat ook niet nodig omdat je via de grafische interface van OS X toegang krijgt tot bijna functies.

Toch kan OS X Terminal ontzettend handig zijn wanneer je complexe opdrachten snel wilt uitvoeren, bijvoorbeeld wanneer er meerdere documenten op je harddisk aanwezig zijn waarin je een bepaald woord of stuk tekst wilt aanpassen. Je kunt dan vanzelfsprekend alle documenten openen in een teksteditor en de woorden aanpassen. Met behulp van Terminal en het ‘sed’ commando is dit echter slechts een kwestie van seconden en gaat het volledig automatisch.

Het ‘sed’ commando kun je met de onderstaande opties gebruiken:

sed -i 's/origineel/vervanging/g'

Stel je hebt een aantal .txt documenten (in je Documenten map) waarin je het woord “Microsoft” wilt wijzigen in “Apple”, dan kun je gebruik maken van het onderstaande commando:

sed -i 's/Microsoft/Apple/g' ~/Documents/*.txt

In alle .txt bestanden zal worden gezocht naar ‘Microsoft’ en dit zal worden vervangen door ‘Apple’.

Het is ook mogelijk om gedeeltes of zelfs complete zinnen op deze manier snel te wijzigen.

Voorbeeld:

sed -i 's/2 dl water/5 dl melk/g' ~/Documents/Recepten*.txt

In het bovenstaande voorbeeld wordt in alle .txt bestanden die beginnen met ‘Recepten’ de tekst ‘2 dl water’ vervangen door ‘5 dl melk’.

Wederom een bewijs dat Terminal een zeer krachtige tool is.

Meer over terminal kun je hier terugvinden.




Gerelateerde tips:




Reacties


  • Joost Janssen 27 augustus 2013 om 10:01

    Handig. Maak wel eerst een backup, want alles in die bestanden wordt vervangen. Ook datgene wat je zelf niet ziet maar er wel in zit. B.v. Word-bestanden hebben veel data die ze niet tonen, maar wel aanwezig zijn. Als je dat met deze methode wijzigt dan is de kans groot dat het bestand corrupt is geworden.

  • ppl 28 augustus 2013 om 0:37

    Het is een beetje een simpel voorbeeld want dit soort dingen kun je ook met tools als TextEdit. Daar heb je niet specifiek de commandline voor nodig. De kracht van sed en diens vriendje awk zit hem in de geavanceerdere mogelijkheden. Dan moet je meer denken aan wat je met sql doet: manipuleren van data. SQL gebruik je dan op databases, sed en awk weer op (hoofdzakelijk) tekstbestanden. Als je zoekt op sed/awk zul je veel voorbeelden zien met bestanden met daarin een studentenadministratie of iets in die geest. Een voorbeeld die ook vaak bij databases wordt gebruikt.

Een reactie toevoegen: