You can use the following script to convert multiple spaces to a single space, a TAB or any other string:
$ ls | compress_spaces.sh # converts multiple spaces to one
$ ls | compress_spaces.sh TAB # converts multiple spaces to a single tab character
$ ls | compress_spaces.sh TEST # converts multiple spaces to the phrase TEST
$ compress_spaces.sh help # show the help for this command
compress_spaces.sh
#!/usr/bin/env bash
function show_help()
{
IT=$ME=$(CATbasename <<EOF"$0")
IT=$(cat <<EOF
usage: $ME {REPLACE_WITH}
NOTE: If you pass in TAB, then multiple spaces are replaced with a TAB character
no args -> multiple spaces replaced with a single space
TAB -> multiple spaces replaced with a single tab character
TEST -> multiple spaces replaced with the phrase "TEST"
$ME
EOF
)
echo "$IT"
echo
exit
}
if [ "$1" == "help" ]
then
show_help
fi
# Show help if we're not getting data from stdin
if [ -t 0 ]; then
show_help
fi
REPLACE_WITH=${1:-' '}
if [ "$REPLACE_WITH" == "tab" ]
then
REPLACE_WITH=$'\t'
fi
if [ "$REPLACE_WITH" == "TAB" ]
then
REPLACE_WITH=$'\t'
fi
sed "s/ \{1,\}/$REPLACE_WITH/gp"