aboutsummaryrefslogtreecommitdiff
path: root/scripts/dot-local/bin/aligncol
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/dot-local/bin/aligncol')
-rwxr-xr-xscripts/dot-local/bin/aligncol41
1 files changed, 41 insertions, 0 deletions
diff --git a/scripts/dot-local/bin/aligncol b/scripts/dot-local/bin/aligncol
new file mode 100755
index 0000000..5e7e375
--- /dev/null
+++ b/scripts/dot-local/bin/aligncol
@@ -0,0 +1,41 @@
+#!/usr/bin/env bash
+
+set -euo pipefail
+
+usage() {
+ echo "Usage: $0 [-s specialchar] [-h] colmark [colmark ...]"
+}
+
+sflag=
+sep=
+
+while getopts "hs:" opt; do
+ case $opt in
+ s)
+ sflag=1
+ sep="$OPTARG"
+ ;;
+ h)
+ usage
+ exit 0
+ ;;
+ ?)
+ usage
+ exit 1
+ ;;
+ esac
+done
+if [ -z "$sflag" ]; then
+ sep='%'
+fi
+shift $((OPTIND - 1))
+
+sep_escaped=$(printf '%s\n' "$sep" | sed 's/[\/&]/\\&/g')
+
+sed_args=()
+for arg in "$@"; do
+ arg_escaped=$(printf '%s\n' "$arg" | sed 's/[\/&]/\\&/g')
+ sed_args+=(-e "s/$arg_escaped/$sep_escaped&/g")
+done
+
+sed "${sed_args[@]}" | column -t -s"$sep_escaped" -o' '