Ну тогда что-то типа
echo "$a" | while read line; do
num=$(echo "$line" | sed -r 's/.*"([0-9]+)".*/\1/')
grep -q $num <<<$b || print $line
done
вроде работает, но на больших объемах это будет чертовски медленно. То есть, если это не предусмотрено в jq, то реально надо или программировать (Руби для примера, можно в Питоне, в Javascript), или же пользоваться json-ориентированными базами данных - загонять в mongodb, допустим, а там уже разбираться. Но, это ИМО не менее сложно, чем программировать и надо делать, если объемы данных в миллионах считаются, ну и постоянно с одними и теми же данными работать надо.
jq - это рельсы. Где дорога проложена, там все едет и работает. А где нет, то никак. Как я понял, можно из одного массива вычесть другой и все.
Пользователь решил продолжить мысль 02 Декабря 2015, 14:07:47:
Да, кстати, jq + awk - можно сделать, чтоб работало быстро и выглядело не очень страшно, но я давненько awk не пользовался. И то же программирование получится.