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:
- the first FOR iterate over a list of ini file in the current directory.
- || [[ -n "$PROP_KEY" ]] permits to read the last line even without end of line
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
