From 9c1224578330135406ddc9f461184ff1f6756c0c Mon Sep 17 00:00:00 2001 From: Adam Hovorka Date: Sun, 30 Sep 2018 20:36:27 -0600 Subject: Add some more random utilities/functions --- base/pr-dups | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100755 base/pr-dups (limited to 'base/pr-dups') diff --git a/base/pr-dups b/base/pr-dups new file mode 100755 index 0000000..211ab64 --- /dev/null +++ b/base/pr-dups @@ -0,0 +1,55 @@ +#!/usr/bin/env perl + +# Finds duplicate adjacent words. +# http://matt.might.net/articles/shell-scripts-for-passive-voice-weasel-words-duplicates/ + +use strict ; + +my $DupCount = 0 ; + +if (!@ARGV) { + print "Usage: dups ...\n" ; + exit ; +} + +while (1) { + my $FileName = shift @ARGV ; + + # Exit code = number of duplicates found. + exit $DupCount if (!$FileName) ; + + open FILE, $FileName or die $!; + + my $LastWord = "" ; + my $LineNum = 0 ; + + while () { + chomp ; + + $LineNum ++ ; + + my @words = split (/(\W+)/) ; + + foreach my $word (@words) { + # Skip spaces: + next if $word =~ /^\s*$/ ; + + # Skip punctuation: + if ($word =~ /^\W+$/) { + $LastWord = "" ; + next ; + } + + # Found a dup? + if (lc($word) eq lc($LastWord)) { + print "$FileName:$LineNum $word\n" ; + $DupCount ++ ; + } # Thanks to Sean Cronin for tip on case. + + # Mark this as the last word: + $LastWord = $word ; + } + } + + close FILE ; +} -- cgit v1.2.3-70-g09d2