« Removing a Shared Branch No Longer In Use | Main | Sharing Git Branches Remotely »


For the longest time, I have been meaning to brush up on Python. Unfortunately, * I haven't had much need for scripts lately. * When I have needed a script, I've needed it pronto! No time to learn a new language.

The problem is I'm lazy and I don't really want to read a book or website on it. I just want to solve some little problem I might have that needed scripting. You know, just take a sample script and play with it to do something useful to me.

So... after lamenting about this, my friend Mike sent me a sample python script to play with. The sample code he sent me was basically a simple grep clone.


I have always wanted a grep-like tool that gave me more context. I know that you can tell grep itself to provide more context, but as far as I know, you can only specify the number of lines before and after your match you want included. This is realistically all one might need for most cases, but I wanted more.

So that is what me new script does. (You can find a copy of my script here) You provide three search terms:

  • trigger: the main term you are looking for.
  • begin: something pattern that describes the beginning of the block you want to print out.
  • end: The end pattern for the block.

For example: I exported an xml file from my iTunes library that describes all of my media. I can now search for the name of an author for example and get The full dictionary entry for the song. (output listed below.)

I hope this is useful to some one else or at least serves as a starting point for your own exploration of python.

% triggerGreppy Tacuba "<dict>" "</dict>" Library.xml

        <key>Track ID</key><integer>7587</integer>
        <key>Name</key><string>Bar Tacuba</string>
        <key>Artist</key><string>Café Tacuba</string>
        <key>Album Artist</key><string>Café Tacuba</string>
        <key>Album</key><string>Café Tacuba</string>
        <key>Genre</key><string>Alternativo &#38; Rock Latino</string>
        <key>Kind</key><string>MPEG audio file</string>
        <key>Total Time</key><integer>233221</integer>
        <key>Track Number</key><integer>13</integer>
        <key>Date Modified</key><date>2010-09-27T20:44:49Z</date>
        <key>Date Added</key><date>2010-08-03T04:30:10Z</date>
        <key>Bit Rate</key><integer>160</integer>
        <key>Sample Rate</key><integer>44100</integer>
        <key>Artwork Count</key><integer>1</integer>
        <key>Persistent ID</key><string>E467DC7506CA7184</string>
        <key>Track Type</key><string>File</string>
        <key>File Folder Count</key><integer>4</integer>
        <key>Library Folder Count</key><integer>1</integer>

        <key>Track ID</key><integer>7753</integer>
        <key>Name</key><string>Las Flores- Cafe Tacuba</string>
        <key>Artist</key><string>Various Artists</string>
        <key>Album</key><string>Hace Calor  Pop &#38; Rock</string>
        <key>Genre</key><string>General Rock</string>
        <key>Kind</key><string>MPEG audio file</string>
        <key>Total Time</key><integer>136881</integer>
        <key>Track Number</key><integer>3</integer>
        <key>Date Modified</key><date>2010-08-19T05:00:31Z</date>
        <key>Date Added</key><date>2010-08-19T04:58:27Z</date>
        <key>Bit Rate</key><integer>160</integer>
        <key>Sample Rate</key><integer>44100</integer>
        <key>Play Count</key><integer>1</integer>
        <key>Play Date</key><integer>3370023481</integer>
        <key>Play Date UTC</key><date>2010-10-16T01:38:01Z</date>
        <key>Persistent ID</key><string>52FAE1944A13F3EE</string>
        <key>Track Type</key><string>File</string>
        <key>File Folder Count</key><integer>4</integer>
        <key>Library Folder Count</key><integer>1</integer>


[I removed furthere matches for brevity]

PrintView Printer Friendly Version

EmailEmail Article to Friend

References (2)

References allow you to track sources for this article, as well as articles that were written in response to this article.

Reader Comments

There are no comments for this journal entry. To create a new comment, use the form below.

PostPost a New Comment

Enter your information below to add a new comment.

My response is on my own website »
Author Email (optional):
Author URL (optional):
Some HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>