aboutsummaryrefslogtreecommitdiff
path: root/bin/ax.sh
blob: 0007cbed0e4041ba233dc081762280e550799a9a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 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\n
    1) form='%s\n' 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

# Important note: there's little stopping the user from putting a fully-fledged
# Awk program into the expression; don't use this anywhere that code injection
# could wreck your life. See manual page ax(1df).
awk -v form="$form" 'BEGIN{printf form,('"$expr"');exit}'