to-json.sh 372 B

1234567891011121314151617181920212223
  1. #!/bin/sh
  2. # If a filename is provided use it, otherwise read from stdin.
  3. CSV=${1:-/dev/stdin}
  4. awk -F, '
  5. NR==1 {
  6. # Store header names.
  7. for (i=1; i<=NF; i++) header[i]=$i;
  8. print "["
  9. }
  10. NR>1 {
  11. printf "%s{", sep;
  12. for (i=1; i<=NF; i++) {
  13. printf "%s\"%s\":\"%s\"", (i>1?",":""), header[i], $i;
  14. }
  15. printf "}"
  16. sep = ",\n"
  17. }
  18. END {
  19. print "\n]"
  20. }
  21. ' "$CSV"