#!/usr/bin/env bash # Assumes the CSV file has a proper header! thisfile="$0" main() { local csv_header grep_result check_args "$@" grep_result=$(grep -E "${1}" "${2}") IFS=',' read -r -a grepArray <<< "$grep_result" csv_header=$(head -n 1 "${2}") IFS=',' read -r -a headerArray <<< "$csv_header" for index in "${!headerArray[@]}"; do printf "%2s%50s%50s\\n" "$index" "${headerArray[index]}" "${grepArray[index]}" done } exit_help() { printf "%s\n" "Usage: $thisfile " exit 1 } check_args() { # Check if we have 2 args if [ "$#" -ne 2 ]; then exit_help fi # Check that argument 2 is an existing file.. [[ ! -z $2 ]] && [[ -f "$2" ]] || exit_help } main "$@"