#!/bin/bash # Define the expected number of columns EXPECTED_COLUMNS=5 # Input CSV file CSV_FILE=$1 # Check if the file is provided if [ -z "$CSV_FILE" ]; then echo "Usage: $0 " exit 1 fi # Check if the file exists if [ ! -f "$CSV_FILE" ]; then echo "Error: File '$CSV_FILE' not found." exit 1 fi # Validate each row in the CSV line_number=0 while IFS= read -r line; do line_number=$((line_number + 1)) # Use a CSV parser to correctly handle quoted fields column_count=$(echo "$line" | awk -v FPAT='([^,]*|"[^"]*")' '{print NF}') if [ "$column_count" -ne "$EXPECTED_COLUMNS" ]; then echo "Error: Line $line_number has $column_count columns (expected $EXPECTED_COLUMNS)." exit 1 fi done < "$CSV_FILE" echo "Validation passed: All rows have $EXPECTED_COLUMNS columns."