sed one-liners to clean blanks

Using sed one-liners, recursively clean from text files:

  • blank lines
  • trailing whitespace

NOTE: ensure the globbing pattern is only for the expected text files or you might goof up PDF files etc. by just using “*”

The script below is used like:

./clean.sh ~/my_site "*.md"

clean.sh contains:

#!/bin/bash

set -e

loc=$1
pat=$2

find $loc -not -path "*/.git*" -type f -name "$pat" -execdir sed --in-place 's/[[:space:]]\+$//' {} \+ -execdir sed --in-place -e :a -e '/^\n*$/{$d;N;};/\n$/ba' {} \+

Note that each “-execdir” command is separate. Add more commands or take out what is unwanted.

Use cases

  • keep files “Git clean” of trailing spaces and extra lines at end of file
  • Matlab editor doesn’t autoclean these lines, so use this script for “*.m” files