grep
Function
grep — search strings inside of values
Synopsis
grep(<pattern> [, e: any]) -> bool
Description
The grep function searches all of the strings in its input value e
(or this if e is not given)
using the <pattern> argument, which must be a
regular expression,
glob pattern, or string literal.
If the pattern matches for any string, then the result is true. Otherwise, it is false.
Note that string matches are case insensitive while regular expression and glob matches are case sensitive. In a forthcoming release, case sensitivity will be a expressible for all three pattern types.
The entire input value is traversed:
- for records, each field name is traversed and each field value is traversed or descended if a complex type,
- for arrays and sets, each element is traversed or descended if a complex type, and
- for maps, each key and value is traversed or descended if a complex type.
Examples
Reach into nested records
echo '{foo:10}{bar:{s:"baz"}}' | zq -z 'grep("baz")' -
=>
{bar:{s:"baz"}}
It only matches string fields
echo '{foo:10}{bar:{s:"baz"}}' | zq -z 'grep("10")' -
=>
Match a field name
echo '{foo:10}{bar:{s:"baz"}}' | zq -z 'grep("foo")' -
=>
{foo:10}
Regular expression
echo '{foo:10}{bar:{s:"baz"}}' | zq -z 'grep(/foo|baz/)' -
=>
{foo:10}
{bar:{s:"baz"}}
Glob with a second argument
echo '{s:"bar"}{s:"foo"}{s:"baz"}{t:"baz"}' | zq -z 'grep(b*, s)' -
=>
{s:"bar"}
{s:"baz"}