1da2e3ebdSchin######################################################################## 2da2e3ebdSchin# # 3da2e3ebdSchin# This software is part of the ast package # 4*b30d1939SAndy Fiddaman# Copyright (c) 1982-2012 AT&T Intellectual Property # 5da2e3ebdSchin# and is licensed under the # 6*b30d1939SAndy Fiddaman# Eclipse Public License, Version 1.0 # 77c2fbfb3SApril Chin# by AT&T Intellectual Property # 8da2e3ebdSchin# # 9da2e3ebdSchin# A copy of the License is available at # 10*b30d1939SAndy Fiddaman# http://www.eclipse.org/org/documents/epl-v10.html # 11*b30d1939SAndy Fiddaman# (with md5 checksum b35adb5213ca9657e911e9befb180842) # 12da2e3ebdSchin# # 13da2e3ebdSchin# Information and Software Systems Research # 14da2e3ebdSchin# AT&T Research # 15da2e3ebdSchin# Florham Park NJ # 16da2e3ebdSchin# # 17da2e3ebdSchin# David Korn <dgk@research.att.com> # 18da2e3ebdSchin# # 19da2e3ebdSchin######################################################################## 20da2e3ebdSchinfunction err_exit 21da2e3ebdSchin{ 22da2e3ebdSchin print -u2 -n "\t" 23da2e3ebdSchin print -u2 -r ${Command}[$1]: "${@:2}" 24da2e3ebdSchin let Errors+=1 25da2e3ebdSchin} 26da2e3ebdSchinalias err_exit='err_exit $LINENO' 27da2e3ebdSchin 28da2e3ebdSchinCommand=${0##*/} 29da2e3ebdSchininteger Errors=0 3034f9b3eeSRoland Mainz 3134f9b3eeSRoland Mainztmp=$(mktemp -dt) || { err_exit mktemp -dt failed; exit 1; } 3234f9b3eeSRoland Mainztrap "cd /; rm -rf $tmp" EXIT 33*b30d1939SAndy Fiddaman 34*b30d1939SAndy Fiddamantmp1=$tmp/tmp1.csv 35*b30d1939SAndy Fiddamantmp2=$tmp/tmp2.csv 36*b30d1939SAndy Fiddamancat > $tmp1 <<- \EOF 37*b30d1939SAndy Fiddaman CAT,"CVE CCODE","NECA OCN",ST,LATA,AP,"New InterState 38*b30d1939SAndy Fiddaman Orig","New Inter""""State 39*b30d1939SAndy Fiddaman Term","New IntraState 40*b30d1939SAndy Fiddaman Orig","New IntraState 41*b30d1939SAndy Fiddaman Term" 42*b30d1939SAndy Fiddaman CLEC,XXXX,AAAA,RB,ABC,comp," 0.2 "," 0.4 "," 0.6 "," 0.8 " 43*b30d1939SAndy Fiddaman CLEC,YYYY,QQQQ,SX,123,mmmm," 0.3 "," 0.5 "," 0.7 "," 0.9 " 44*b30d1939SAndy FiddamanEOF 45*b30d1939SAndy Fiddamaninteger count=0 nfields 46*b30d1939SAndy FiddamanIFS=${2-,} 47*b30d1939SAndy Fiddamanfor j in 1 2 48*b30d1939SAndy Fiddamando typeset -a arr 49*b30d1939SAndy Fiddaman while read -A -S arr 50*b30d1939SAndy Fiddaman do ((nfields=${#arr[@]})) 51*b30d1939SAndy Fiddaman if ((++count==1)) 52*b30d1939SAndy Fiddaman then ((nfields==10)) || err_exit 'first record should contain 10 fields' 53*b30d1939SAndy Fiddaman [[ ${arr[7]} == $'New Inter""State\nTerm' ]] || err_exit $'7th field of record 1 should contain New Inter""State\nTerm' 54*b30d1939SAndy Fiddaman fi 55*b30d1939SAndy Fiddaman for ((i=0; i < nfields;i++)) 56*b30d1939SAndy Fiddaman do delim=$IFS 57*b30d1939SAndy Fiddaman if ((i == nfields-1)) 58*b30d1939SAndy Fiddaman then delim=$'\r\n' 59*b30d1939SAndy Fiddaman fi 60*b30d1939SAndy Fiddaman if ((i==1)) 61*b30d1939SAndy Fiddaman then printf "%#q%s" "${arr[i]}" "$delim" 62*b30d1939SAndy Fiddaman else printf "%(csv)q%s" "${arr[i]}" "$delim" 63*b30d1939SAndy Fiddaman fi 64*b30d1939SAndy Fiddaman done 65*b30d1939SAndy Fiddaman done < $tmp1 > $tmp2 66*b30d1939SAndy Fiddamandone 67*b30d1939SAndy Fiddamandiff "$tmp1" "$tmp2" >/dev/null 2>&1 || err_exit "files $tmp1 and $tmp2 differ" 6834f9b3eeSRoland Mainz 69*b30d1939SAndy Fiddamanexit $((Errors<125?Errors:125)) 70da2e3ebdSchin 71