aboutsummaryrefslogtreecommitdiff
path: root/scripts/dot-local/bin/aligncol
diff options
context:
space:
mode:
authorMohammad Reza Karimi <m.r.karimi.j@gmail.com>2026-01-09 17:34:31 -0500
committerMohammad Reza Karimi <m.r.karimi.j@gmail.com>2026-01-09 17:34:31 -0500
commit5e83a094476f28eb77508c8b470efe3dfd56de83 (patch)
treef0f39b694fcad8e408c2a41f3d3240dfce44c504 /scripts/dot-local/bin/aligncol
parent6c17d2c74ea4daeb9dbf2c2b7aafeb86111b7f65 (diff)
some big changes
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' '