Bash cleanup csv header

Published on:

Clean up CSV header row using bash.

#!/usr/bin/env bash

# Takes a CSV input file and replaces all non alpha numeric characters
# in the header (first line) with underscore. Makes it nice to import into
# SQL database.

FILE=$1
if [ -a $FILE ]; then
    HEADER=$(head -1 "$FILE" | tr '[:upper:]' '[:lower:]')
    export IFS=","
    NEW_HEADER=''
    COM=''
    for word in $HEADER; do
      NEW_HEADER="${NEW_HEADER}$COM${word//[^a-zA-Z_]/_}"
      COM=','
    done
    sed -i "1s/.*/$NEW_HEADER/" "$FILE"
else
    echo "file, $FILE, not found"
fi