You can also use biterscripting ( http://www.biterscripting.com ) for CSV files. The $lsep variable describes what separates rows. The $wsep variable describes what separates columns.
For your case ( | and ^)
set $lsep="^"
set $wsep = "|"
# Read file in.
var str data ; cat "file.csv" > $data
# Process rows one by one.
while ($data <> "")
do
var str row ; lex -e "1" $data > $row
# Process columns one by one
while ($row <> "")
do
wex -e "1" $row
echo ","
done
echo "\n"
done
The above script will put your CSV file in the more traditional format (comma and newline).
Patrick