Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

App::highlight - a simple grep-like highlighter app

10,017 views

Published on

App::highlight is a bit like grep, except that it doesn't filter out lines. In exchange for seeing all the output you get a lot more fun highlighting options to play with, and full Perl regex support of course.

I gave this talk at the London.pm technical meeting in July 2013.

App::highlight is available on Github and CPAN.

Published in: Technology
  • Government auctions are cool. We got a great deal on a quality car that we wanted. Awesome! ☀☀☀ https://bit.ly/3h0ICqP
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Look at my new car! I am so excited! Getting a bargain at auction was easier than we thought. We will do it again. ➢➢➢ https://bit.ly/3h0ICqP
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • I thought car auctions were only for dealers and I saved more than I expected. Thanks for showing me how to do it. ✱✱✱ https://w.url.cn/s/Aaxmqpl
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • We bought our daughter's first car from one of the auctions listed by Gov-Auctions.org. Thanks for a great service. ➤➤ https://w.url.cn/s/A9eBVEi
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THIS can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THIS is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBooks .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THIS Helped Ignite a Movement,-- Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THIS the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THIS Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

App::highlight - a simple grep-like highlighter app

  1. 1. App::highlight a simple grep-like highlighter app Alex Balhatchet @ London.pm Technical Meeting, July 2013
  2. 2. Intro alex@masaki:~$ cat words.txt fred barney betty wilma dino pebbles bamm-bamm
  3. 3. Intro alex@masaki:~$ cat words.txt | grep a barney wilma bamm-bamm
  4. 4. Intro alex@masaki:~$ cat words.txt | highlight a fred barney betty wilma dino pebbles bamm-bamm
  5. 5. Why?
  6. 6. Real World Example 1 alex@masaki:~$ servicectl status servicectl status: checking arbyte-job-buffer-probe... running. servicectl status: checking arbyte-job-runner-cleanup-cron... running. servicectl status: checking arbyte-job-runners... running. servicectl status: checking arbyte-manager... running. servicectl status: checking arbyte-status-accepter... running. servicectl status: checking imagesys-managerd... running. servicectl status: checking launch-target-cron... running. servicectl status: checking listings-db... running. servicectl status: checking ops-cron... not running. servicectl status: checking search-db... running. servicectl status: checking searchindex-cron... running. servicectl status: checking updatesem-cron... running.
  7. 7. Real World Example 1 alex@masaki:~$ servicectl status | highlight -l 'not running' servicectl status: checking arbyte-job-buffer-probe... running. servicectl status: checking arbyte-job-runner-cleanup-cron... running. servicectl status: checking arbyte-job-runners... running. servicectl status: checking arbyte-manager... running. servicectl status: checking arbyte-status-accepter... running. servicectl status: checking imagesys-managerd... running. servicectl status: checking launch-target-cron... running. servicectl status: checking listings-db... running. servicectl status: checking ops-cron... not running. servicectl status: checking search-db... running. servicectl status: checking searchindex-cron... running. servicectl status: checking updatesem-cron... running.
  8. 8. Real World Example 2 alex@masaki:~$ zcat listings.txt.gz | grep "'id' => '8244118'" $VAR1 = {'debug' => {'remote_used' => 1},'etl' => {'agent_database_key' => undef,'feed_version' => '1.7','feed_timestamp' => '20130717100846','id' => '8244118','feed_segment' => undef,'feed_name' => 'domain','partner_database_key' => undef},'listing_attributes' => {'agent_description' => undef,'gross_size' => undef,'floor' => '1','num_baths' => 1,'gross_size_unit' => undef,'construction_year' => undef,'num_rooms' => undef,'num_beds' => 3,'commission' => undef,'property_type' => 'house','datasource_custom_two' => undef,'land_size' => undef,'datasource_custom_five' => undef,'net_size_unit' => undef,'energyrating' => '0','net_size' => undef,'agent_logo_url' => undef,'rental_deposit' => undef,'energyindex' => '0','car_spaces' => '1','land_size_unit' => undef,'datasource_custom_three' => undef,'auction_date' => undef,'datasource_custom_four' => undef,'datasource_custom_one' => undef},'listers' => {'name' => 'Private Advertiser','type' => undef,'company' => 'Private Advertiser'},'listings' => {'price_currency' => 'AUD','full_description' => 'Alarm System, Balcony, Garden, Internal Laundry, Polished Timber Floors, Built-In Wardrobes, Fireplaces, Renovated - 6 metres wide, grand and spacious, light- filled terrace Restoration by award-winning architect 5 minute stroll to Woollahra village, Centennial Park and Oxford Street Enormous family/dining/kitchen area opening to rear courtyard garden Double Living area with marble fireplaces and mirrors 3 large bedrooms - two with marble fireplaces, all with quality built-ins and plantation shutters Rear lane car access via remote control roll-a-door Luxury marble bathroom with bath and separate frameless glass shower Built-in laundry Downstairs powder room Large, private rear courtyard with established garden Entrance courtyard garden Garden maintenance included Foxtel connections to living areas and two bedrooms Alarm system Telephone 0412 758 772 to arrange an appointment for inspection','placenames' => '{"street":"Windsor Street","building":"157","province":"NSW","town":" Paddington"}','listing_type' => 'rent','title_keywords' => 'paddington,windsor street','keywords' => ['backyard','balcony','garden','kitchen','terrace'],'actually_the_original_address' => '157 Windsor Street, Paddington, NSW, 2021','latitude' => '-33.886527','display_address' => undef,'raw_content_digest' => 'c9080b2827fbf612aec4369dd6af1931','debug' => undef,'address' => '157 Windsor Street, Paddington, NSW, 2021','price_type' => 'weekly','longitude' => '151.235183','teaser' => 'Alarm System, Balcony, Garden, Internal Laundry, Polished Timber Floors, Built-In Wardrobes, Fireplaces, Renovated 6 metres wide, grand and light-filled terrace Restoration by award-winning architect 5 minute stroll to Woollahra village, Centennial Park and Oxford Street Enormous...','geocode_method' => 'remote','geocode_accuracy' => 9,'photo_url' => 'http://images.domain.com.au/img/2013320/0/158ffe47-3469-466b-9727-a51c4def7e1b_FS.jpg','datasource_dbkey' => '8244118','site_url' => 'http://www.domain.com.au/Public/PropertyDetails.aspx? adid=8244118','photo_count' => '8','ext_categories' => '','price' => 1850,'coldrent' => undef,'title' => 'Windsor Street, Paddington - Balcony','datasource_name' => 'domain','price_low' => 1850,'photos' => {'urls' => ['http://images.domain.com.au/img/2013320/0/158ffe47-3469-466b-9727-a51c4def7e1b_FS.jpg'],'total' => '8'},'monetized' => '0','status_type' => 'active','datasource_campaign_id' => undef,'site_mobile_url' => undef,'display_brand' => undef,'attribute_hash' => '8244118','postcode' => '2021','country' => undef,'orig_address' => '157 Windsor Street, Paddington, NSW, 2021','geocode_matched' => '2021, 157 Windsor Street, Paddington, New South Wales, Australia','price_high' => 1850,'display_price' => '$1,850'}};
  9. 9. Real World Example 2 alex@masaki:~$ zcat listings.txt.gz | grep "'id' => '8244118'" | highlight 'postcode' $VAR1 = {'debug' => {'remote_used' => 1},'etl' => {'agent_database_key' => undef,'feed_version' => '1.7','feed_timestamp' => '20130717100846','id' => '8244118','feed_segment' => undef,'feed_name' => 'domain','partner_database_key' => undef},'listing_attributes' => {'agent_description' => undef,'gross_size' => undef,'floor' => '1','num_baths' => 1,'gross_size_unit' => undef,'construction_year' => undef,'num_rooms' => undef,'num_beds' => 3,'commission' => undef,'property_type' => 'house','datasource_custom_two' => undef,'land_size' => undef,'datasource_custom_five' => undef,'net_size_unit' => undef,'energyrating' => '0','net_size' => undef,'agent_logo_url' => undef,'rental_deposit' => undef,'energyindex' => '0','car_spaces' => '1','land_size_unit' => undef,'datasource_custom_three' => undef,'auction_date' => undef,'datasource_custom_four' => undef,'datasource_custom_one' => undef},'listers' => {'name' => 'Private Advertiser','type' => undef,'company' => 'Private Advertiser'},'listings' => {'price_currency' => 'AUD','full_description' => 'Alarm System, Balcony, Garden, Internal Laundry, Polished Timber Floors, Built-In Wardrobes, Fireplaces, Renovated - 6 metres wide, grand and spacious, light- filled terrace Restoration by award-winning architect 5 minute stroll to Woollahra village, Centennial Park and Oxford Street Enormous family/dining/kitchen area opening to rear courtyard garden Double Living area with marble fireplaces and mirrors 3 large bedrooms - two with marble fireplaces, all with quality built-ins and plantation shutters Rear lane car access via remote control roll-a-door Luxury marble bathroom with bath and separate frameless glass shower Built-in laundry Downstairs powder room Large, private rear courtyard with established garden Entrance courtyard garden Garden maintenance included Foxtel connections to living areas and two bedrooms Alarm system Telephone 0412 758 772 to arrange an appointment for inspection','placenames' => '{"street":"Windsor Street","building":"157","province":"NSW","town":" Paddington"}','listing_type' => 'rent','title_keywords' => 'paddington,windsor street','keywords' => ['backyard','balcony','garden','kitchen','terrace'],'actually_the_original_address' => '157 Windsor Street, Paddington, NSW, 2021','latitude' => '-33.886527','display_address' => undef,'raw_content_digest' => 'c9080b2827fbf612aec4369dd6af1931','debug' => undef,'address' => '157 Windsor Street, Paddington, NSW, 2021','price_type' => 'weekly','longitude' => '151.235183','teaser' => 'Alarm System, Balcony, Garden, Internal Laundry, Polished Timber Floors, Built-In Wardrobes, Fireplaces, Renovated 6 metres wide, grand and light-filled terrace Restoration by award-winning architect 5 minute stroll to Woollahra village, Centennial Park and Oxford Street Enormous...','geocode_method' => 'remote','geocode_accuracy' => 9,'photo_url' => 'http://images.domain.com.au/img/2013320/0/158ffe47-3469-466b-9727-a51c4def7e1b_FS.jpg','datasource_dbkey' => '8244118','site_url' => 'http://www.domain.com.au/Public/PropertyDetails.aspx? adid=8244118','photo_count' => '8','ext_categories' => '','price' => 1850,'coldrent' => undef,'title' => 'Windsor Street, Paddington - Balcony','datasource_name' => 'domain','price_low' => 1850,'photos' => {'urls' => ['http://images.domain.com.au/img/2013320/0/158ffe47-3469-466b-9727-a51c4def7e1b_FS.jpg'],'total' => '8'},'monetized' => '0','status_type' => 'active','datasource_campaign_id' => undef,'site_mobile_url' => undef,'display_brand' => undef,'attribute_hash' => '8244118','postcode' => '2021','country' => undef,'orig_address' => '157 Windsor Street, Paddington, NSW, 2021','geocode_matched' => '2021, 157 Windsor Street, Paddington, New South Wales, Australia','price_high' => 1850,'display_price' => '$1,850'}};
  10. 10. Features
  11. 11. Features alex@masaki:~$ highlight --help highlight [-bCcehlnor] [long options...] -c --color use terminal color for highlighting -C --no-color don't use terminal color -e --escape auto-escape input (default) -r -n --regex --no-escape don't auto-escape input (regex mode) -i --ignore-case ignore case for matches -l --full-line highlight the whole matched line -o --one-color use only one color for all matches -b --show-bad-spaces highlight spaces at the end of lines -v --version show version number -h --help display a usage message
  12. 12. Color alex@masaki:~$ cat words.txt | highlight fred barney betty wilma dino pebbles bamm- bamm fred barney betty wilma dino pebbles bamm-bamm
  13. 13. No Color alex@masaki:~$ cat words.txt | highlight fred barney betty wilma dino pebbles bamm- bamm --no-color <<fred>> [[barney]] ((betty)) {{wilma}} **dino** __pebbles__ <<bamm-bamm>>
  14. 14. Escape alex@masaki:~$ cat words.txt | highlight 'b[ea]t{2}.' fred barney betty wilma dino pebbles bamm-bamm
  15. 15. No Escape (aka regex mode) alex@masaki:~$ cat words.txt | highlight --regex 'b[ea]t{2}.' fred barney betty wilma dino pebbles bamm-bamm
  16. 16. Ignore Case alex@masaki:~$ cat words.txt | highlight --ignore-case 'MM' fred barney betty wilma dino pebbles bamm-bamm
  17. 17. Full Line alex@masaki:~$ cat words.txt | highlight --full-line 'a' fred barney betty wilma dino pebbles bamm-bamm
  18. 18. One Color alex@masaki:~$ cat words.txt | highlight --one-color 'f' 'r' 'e' 'b' fred barney betty wilma dino pebbles bamm-bamm
  19. 19. Bad Spaces (inspired by git diff) alex@masaki:~$ cat words.txt | highlight --show-bad-spaces fred barney bettyxxxx wilma dino pebblesx bamm-bamm
  20. 20. Cool Tricks
  21. 21. SVN Diff alias svndiff=" svn diff | highlight --show-bad-spaces | highlight --regex --full-line '^-[^-]' '^[+][^+]' '^[+-]{2}' | less -R"
  22. 22. SVN Diff alex@masaki:~$ svndiff =================================================================== --- SERP.pm (revision 62240) +++ SERP.pm (working copy) @@ -1,13 +1,14 @@ +use utf8; +xxxx package Lokku::URL::SERP; use base 'Lokku::URL'; -use Clone 'clone'; -use List::MoreUtils 'uniq'; +use Clone qw(clone); +use List::MoreUtils qw(uniq); use Lokku::Base::Config;
  23. 23. Tailing Access Logs alex@masaki:~$ tail -f ~/common/logs/apache/frontend/access_log.2013- 07-17-00_00_00 | highlight -l -r 'HTTP/1.1" 50d ' 'HTTP/1.1" 200 ' 'HTTP/1.1" 30d ' 'HTTP/1.1" 40d ' x.x.x.x - - [17/Jul/2013:14:13:51 +0000] "GET /abode-sale-house-in-friday-hill HTTP/1.1" 200 9549 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" 125669 www x.x.x.x - - [17/Jul/2013:14:13:51 +0000] "GET /paige-petrook-rent-flat-in-the-avenue-ha5 HTTP/1.1" 200 9586 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" 97016 www x.x.x.x - - [17/Jul/2013:14:13:51 +0000] "GET /gunness/property/buy HTTP/1.1" 200 16501 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" 109951 www x.x.x.x - - [17/Jul/2013:14:13:52 +0000] "GET /rd?l=UbeTFSQlTSlUJUMFlk&url=2- ePz73aTBU4LVGFByDI484Ner8aIMqOimmnO-vZos3KDcnfaeeMPe4rGzMAHEMEMIx5MZsli8WOfUu6sPU8-oGyl- oBxFgBrDY1PNVVZlNerg11bkCYzKZwBlYrKuUnoqgEDyvQYT0AWjNiAXvEvzby0n8wKI_4SYr67NnK50C3WeiSB3ATzAdHRuPx89ZkLfV 7zVXG2QDbeS6DmC6o17lS3zg4TQbgURP9KPebQfsYvRw- KZZSJe5bz67v9wC0YOb6G85BbGUnJzoOHf6gadGwCRAqFSnkZv4Fqu84Vq_WqIfy_oPVJlWQ%3D% 3D&v=2&s=Vbelwusrlloqtlnpusmosplslplu&itype=1 HTTP/1.1" 302 - "http://www.nestoria.co.uk/victoria-road- ct14/house/sale" "Mozilla/5.0 (Linux; Android 4.1.2; GT-P3100 Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.64 Safari/537.36" 10465 rd x.x.x.x - - [17/Jul/2013:14:13:52 +0000] "GET /help/unknown-location HTTP/1.1" 404 9279 "-" "Mozilla/5.0 (Linux; U; en-gb; KFOT Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.1 Safari/535.19 Silk- Accelerated=true" 5932 www x.x.x.x - - [17/Jul/2013:14:13:53 +0000] "GET /api? action=search_listings&encoding=json&sort=price_lowhigh&price_min=150001&price_max=200000&page=1&radius=5 2.360992,-2.039034,1mi HTTP/1.1" 200 23729 "-" "-" 65233 api
  24. 24. Using /usr/bin/watch with highlight alex@masaki:~$ watch --color 'du -hsc * | highlight -l G K M' 1.1G alex 32M davidl 16K savio 1.3G total
  25. 25. Tech Details
  26. 26. Perl Modules Used For the app App::Cmd::Simple Term::ANSIColor Getopt::Long::Descriptive For testing App::Cmd::Tester Test::Without::Module
  27. 27. Bug Reports / Contributions https://metacpan.org/module/App::highlight Version 0.13 released July 18th 2013 :-) https://github.com/kaoru/App-highlight https://travis-ci.org/kaoru/App-highlight
  28. 28. N estoria is H iring! http://lokku.com /jobs Thanks!

×