Skip to content

Instantly share code, notes, and snippets.

@gurgeous
Created January 24, 2024 17:16
Show Gist options
  • Save gurgeous/be3e89de15d96e9d7b22f726422e1c7a to your computer and use it in GitHub Desktop.
Save gurgeous/be3e89de15d96e9d7b22f726422e1c7a to your computer and use it in GitHub Desktop.
#!/bin/bash
set -euo pipefail
# sanity checking
if [[ $# -ne 1 ]] ; then
echo 'usage: v <file>'
exit 0
fi
if ! [ -f "$1" ]; then
echo "file not found: '$1'"
exit 1
fi
# what should we pass for bat --file-name?
fname="$1"
fname="${fname%*.gz}"
fname="${fname/.geojson/.json}"
# go
case "$1" in
# json
*.json | *.geojson) cat "$1" | jq . | bat --file-name "$fname" ;;
*.json.gz | *.geojson.gz) gzcat "$1" | jq . | bat --file-name "$fname" ;;
# tar
*.tar) tar -tvf "$1" | bat --file-name "$fname" ;;
*.tar.gz) tar -ztvf "$1" | bat --file-name "$fname" ;;
# csv
*.csv) cat "$1" | vd - -f csv ;;
*.csv.gz) gzcat "$1" | vd - -f csv ;;
*.xlsx) xlsx "$1" | vd - -f csv ;;
# fallbacks
*.gz) gzcat "$1" | bat --file-name "$fname" ;;
*.zip) unzip -v "$1" | bat --file-name "$fname" ;;
*) bat "$1" ;;
esac
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment