Skip to main content

Shell script to remove trailing white space from all lines in a file.

#!/usr/bin/env bash
#
# Removes trailing white space from lines.
#
# Usage: remove_traling_ws <SOURCE_FILE> [OUTPUT_FILE]
#

progname=$(basename $0)
procid=$$
temp="/tmp/${PROGNAME}_${procid}.$RANDOM"

trailingws_=$'s/[ \t]*$//'

function usage()
{
    echo -e "   Usage: $PROGNAME <SOURCE_FILE> [OUTPUT_FILE]"
    echo ""
    exit $1
}

function cleanup
{
    rm -rf "$temp" 2>/dev/null
}

[ -z "$1" ] && usage 1

if [ ! -f "$1" ]; then
    echo ""
    echo "* File not found: $1"
    echo ""
    exit 1
fi

wsfile="$1"
outfile=
if [ ! -z "$2" ]; then
    outfile="$2"
fi

# Remove trailing whitespace from file
echo "=> Remove trailing whitespace: `basename $wsfile`" >&2
cat "$wsfile" | sed "$trailingws_" >"$temp"

if [ ! -z "$outfile" ]; then
    cat "$temp" >"$outfile"
else
    cat "$outfile"
fi

cleanup