From 40cf4c6b46acff33527cec2363a952936dafcaae Mon Sep 17 00:00:00 2001 From: tv Date: Thu, 13 Mar 2014 18:13:56 +0100 Subject: services lib filter: initial commit --- services/lib/filter | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100755 services/lib/filter (limited to 'services/lib/filter') diff --git a/services/lib/filter b/services/lib/filter new file mode 100755 index 00000000..93853895 --- /dev/null +++ b/services/lib/filter @@ -0,0 +1,54 @@ +#! /bin/sh +# +# usage: +# export PATH="//services/lib:$PATH" +# cd services +# ls | filter owner == $LOGNAME | filter hasnt mail +# +set -euf + +main() { + case $# in + 2) op1 "$@";; + 3) op2 "$@";; + *) echo 'You are made of stupid!' >&2; exit 23;; + esac +} + +# op1 OP SCHEMA +op1() { + case "$1" in + has) + xargs grep -H "^$2:" \ + | cut -d: -f1 + ;; + hasnt) + a=$(mktemp) + b=$(mktemp) + trap "rm $a $b; trap - EXIT INT QUIT" EXIT INT QUIT + cat > $a + cat $a | xargs grep -H "^$2:" | cut -d: -f1 > $b + diff -u $b $a | sed -n '/^++/d;s/^+\(.*\)/\1/p' | grep . + esac +} + +# op2 SCHEMA OP RHS +op2() { + case "$2" in + ==) + xargs grep -H "^$1:$3$" \ + | cut -d: -f1 + ;; + !=) + xargs grep -H "^$1:" \ + | grep -v ":$1:$3" \ + | cut -d: -f1 + ;; + ~=) + xargs grep -H "^$1:.*$3.*$" \ + | cut -d: -f1 + ;; + esac +} + +main "$@" -- cgit v1.2.3 From 1ba50fed30b6f8299a2582b5160f7ddb327ce2d5 Mon Sep 17 00:00:00 2001 From: tv Date: Thu, 13 Mar 2014 18:16:25 +0100 Subject: services lib filter: add non-op-names for binops --- services/lib/filter | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'services/lib/filter') diff --git a/services/lib/filter b/services/lib/filter index 93853895..f69a5b0d 100755 --- a/services/lib/filter +++ b/services/lib/filter @@ -35,16 +35,16 @@ op1() { # op2 SCHEMA OP RHS op2() { case "$2" in - ==) + ==|is) xargs grep -H "^$1:$3$" \ | cut -d: -f1 ;; - !=) + !=|isnt) xargs grep -H "^$1:" \ | grep -v ":$1:$3" \ | cut -d: -f1 ;; - ~=) + contains) xargs grep -H "^$1:.*$3.*$" \ | cut -d: -f1 ;; -- cgit v1.2.3