aboutsummaryrefslogtreecommitdiff
path: root/bin/ax.sh
diff options
context:
space:
mode:
Diffstat (limited to 'bin/ax.sh')
-rw-r--r--bin/ax.sh27
1 files changed, 27 insertions, 0 deletions
diff --git a/bin/ax.sh b/bin/ax.sh
new file mode 100644
index 00000000..6ce1e9ea
--- /dev/null
+++ b/bin/ax.sh
@@ -0,0 +1,27 @@
+# Evaluate an Awk expression given on the command line with an optional format
+
+# Count arguments
+case $# in
+
+ # If one argument, we assume format is %s
+ 1) form=%s expr=$1 ;;
+
+ # If two arguments, first is format, second expression
+ 2) form=$1 expr=$2 ;;
+
+ # Any other number of arguments is wrong
+ *)
+ printf >&2 'ax: Need an expression\n'
+ exit 2
+ ;;
+esac
+
+# Form program
+prog=$(printf '
+ BEGIN {
+ printf "%s\\n", %s
+ }
+' "$form" "$expr")
+
+# Run program
+awk "$prog"