Table of Contents

How to read a CSV or a INI file with Bash

About

How to parse a CSV or property (ini) in bash

Snippet

Ini

DIR_PATH="."
FILE_PATTERN="*.ini"
for FILE in ${DIR_PATH}/${FILE_PATTERN}; do

	FILENAME=$(basename ${FILE})
	echo "Reading ${FILENAME}"

	OLD_IFS=$IFS; IFS=$'\n';
	while IFS="=" read -r PROP_KEY PROP_VALUE || [[ -n "$PROP_KEY" ]]; do

		echo "Prop Key:(${PROP_KEY}), (${PROP_VALUE})"

	done < ${FILE}
	IFS=${OLD_IFS}

done

where:

Csv

DIR_PATH="."
FILE_PATTERN="*.csv"
for FILE in ${DIR_PATH}/${FILE_PATTERN}; do

	FILENAME=$(basename ${FILE})
	echo "Reading ${FILENAME}"

	OLD_IFS=$IFS; IFS=$'\n';
        # Adapt to the number of col. Below you have 3
	while IFS="," read -r COL1 COL2 COL3 || [[ -n "$COL1" ]]; do

		echo "${COL1}, ${COL2}, ${COL3}"

	done < ${FILE}
	IFS=${OLD_IFS}

done

Documentation / Reference