@@ -46,10 +46,10 @@ main() {
46
46
47
47
[[ $MULTIPASS -eq 1 ]] && {
48
48
# replace filter expression with index sequence
49
- SET=$( sed -rn ' s/.*, ([0-9]+)[],].*/\1/p' $PASSFILE | tr ' \n' ,)
49
+ SET=$( sed -rn ' s/.*[[,"]+ ([0-9]+)[],].*/\1/p' $PASSFILE | tr ' \n' ,)
50
50
SET=${SET% ,}
51
51
QUERY=$( echo $QUERY | sed " s/?(@[^)]\+)/$SET /" )
52
- [[ $DEBUG -eq 1 ]] && echo " QUERY=$QUERY "
52
+ [[ $DEBUG -eq 1 ]] && echo " QUERY=$QUERY " > /dev/stderr
53
53
reset
54
54
continue
55
55
}
@@ -120,15 +120,13 @@ usage() {
120
120
echo " Usage: JSONPath.sh [-b] [j] [-h] [-f FILE] [pattern]"
121
121
echo
122
122
echo " pattern - the JSONPath query. Defaults to '$.*' if not supplied."
123
- # echo "-s - Remove escaping of the solidus symbol (straight slash)."
124
123
echo " -b - Brief. Only show values."
125
124
echo " -j - JSON output."
126
125
echo " -u - Strip unnecessary leading path elements."
127
126
echo " -i - Case insensitive."
128
127
echo " -p - Pass-through to the JSON parser."
129
128
echo " -w - Match whole words only (for filter script expression)."
130
129
echo " -f FILE - Read a FILE instead of stdin."
131
- # echo "-n - No-head. Do not show nodes that have no path (lines that start with [])."
132
130
echo " -h - This help text."
133
131
echo
134
132
}
@@ -245,7 +243,6 @@ tokenize_path () {
245
243
CHAR=' [^[:cntrl:]"\\]'
246
244
else
247
245
GREP=awk_egrep
248
- # CHAR='[^[:cntrl:]"\\\\]'
249
246
fi
250
247
251
248
local WILDCARD=' \*'
@@ -265,10 +262,10 @@ tokenize_path () {
265
262
$GREP " $INDEX |$STRING |$WORD |$WILDCARD |$FILTER |$DEEPSCAN |$SET |$INDEXALL |." | \
266
263
egrep -v " ^$SPACE $|^\\ .$|^\[$|^\]$|^'$|^\\\$ $|^\)$" )
267
264
[[ $DEBUG -eq 1 ]] && {
268
- echo " egrep -o '$INDEX |$STRING |$WORD |$WILDCARD |$FILTER |$DEEPSCAN |$SET |$INDEXALL |.'"
265
+ echo " egrep -o '$INDEX |$STRING |$WORD |$WILDCARD |$FILTER |$DEEPSCAN |$SET |$INDEXALL |.'" > /dev/stderr
269
266
echo -n " TOKENISED QUERY=" ; echo " $QUERY " | \
270
267
$GREP " $INDEX |$STRING |$WORD |$WILDCARD |$FILTER |$DEEPSCAN |$SET |$INDEXALL |." | \
271
- egrep -v " ^$SPACE $|^\\ .$|^\[$|^\]$|^'$|^\\\$ $|^\)$"
268
+ egrep -v " ^$SPACE $|^\\ .$|^\[$|^\]$|^'$|^\\\$ $|^\)$" > /dev/stderr
272
269
}
273
270
if [ $is_wordsplit_disabled != 0 ]; then unsetopt shwordsplit; fi
274
271
}
@@ -396,7 +393,6 @@ create_filter() {
396
393
else
397
394
[[ $i -gt 0 ]] && comma=" ,"
398
395
fi
399
- # idx=$(echo "${PATHTOKENS[i]}" | tr -d "[]")
400
396
query+=" $comma$a "
401
397
fi
402
398
comma=" ,"
@@ -410,7 +406,7 @@ create_filter() {
410
406
done
411
407
412
408
[[ -z $FILTER ]] && FILTER=" $query [],]"
413
- [[ $DEBUG -eq 1 ]] && echo " FILTER=$FILTER "
409
+ [[ $DEBUG -eq 1 ]] && echo " FILTER=$FILTER " > /dev/stderr
414
410
}
415
411
416
412
# ---------------------------------------------------------------------------
@@ -566,7 +562,7 @@ indexmatcher() {
566
562
567
563
[[ $DEBUG -eq 1 ]] && {
568
564
for i in ` seq 0 $(( ${# INDEXMATCH_QUERY[*]} - 1 )) ` ; do
569
- echo " INDEXMATCH_QUERY[$i ]=${INDEXMATCH_QUERY[i]} "
565
+ echo " INDEXMATCH_QUERY[$i ]=${INDEXMATCH_QUERY[i]} " > /dev/stderr
570
566
done
571
567
}
572
568
@@ -591,11 +587,11 @@ indexmatcher() {
591
587
[[ $i -eq $(( ${# INDEXMATCH_QUERY[*]} - 1 )) ]] && {
592
588
if [[ $step -gt 1 ]]; then
593
589
[[ $(( (num[i]- a)% step)) -eq 0 ]] && {
594
- [[ $DEBUG -eq 1 ]] && echo -n " ($a ,$b ,${num[i]} ) "
590
+ [[ $DEBUG -eq 1 ]] && echo -n " ($a ,$b ,${num[i]} ) " > /dev/stderr
595
591
echo " $line "
596
592
}
597
593
else
598
- [[ $DEBUG -eq 1 ]] && echo -n " ($a ,$b ,${num[i]} ) "
594
+ [[ $DEBUG -eq 1 ]] && echo -n " ($a ,$b ,${num[i]} ) " > /dev/stderr
599
595
echo " $line "
600
596
fi
601
597
}
@@ -814,7 +810,9 @@ filter() {
814
810
[[ $NOCASE -eq 1 ]] && opts+=" -i"
815
811
[[ $WHOLEWORD -eq 1 ]] && opts+=" -w"
816
812
if [[ -z $OPERATOR ]]; then
813
+ [[ $MULTIPASS -eq 1 ]] && FILTER=" $FILTER [\" ]?$"
817
814
egrep $opts " $FILTER "
815
+ [[ $DEBUG -eq 1 ]] && echo " FILTER=$FILTER " > /dev/stderr
818
816
else
819
817
egrep $opts " $FILTER " | \
820
818
while read line; do
@@ -837,7 +835,7 @@ filter() {
837
835
[[ " ${v,,} " < " ${RHS,,} " ]] && echo " $line "
838
836
;;
839
837
esac
840
- done # < <(egrep $opts "$FILTER")
838
+ done
841
839
fi
842
840
}
843
841
0 commit comments