#!/bin/bash # check_nrid.sh # - filters invalid nric in student list csv file for unidata # - assume input is list.csv # - run 'bash check_nric.sh list.csv >/dev/null' to check # - if nothing comes out, then the file is good # - run 'bash check_nrid.sh list.csv > list1.csv 2>/dev/null' # - will get fixed data in list1.csv check_nrid() { local file loop line stid name nrid prog look prev file=$1 [ ! -f $file ] && exit 0 loop=0 while read line ; do if [ $loop -gt 0 ] ; then stid=$(echo $line|cut -d',' -f1) name=$(echo $line|cut -d',' -f2) nrid=$(echo $line|cut -d',' -f3) prog=$(echo $line|cut -d',' -f4) look=0 prev=$nrid while [ ${#nrid} -ne 12 ] ; do nrid="0$nrid" look=1 done # trim prog prog=${prog% } line="$stid,$name,$nrid,$prog,,," if [ $look -ne 0 ] ; then echo "** [$prev] $line" >&2 else echo "$line" fi fi ((loop++)) done < $file } check_nrid $@