Open muzzol opened 2 years ago
Closely related, there could be an option also for removing the useless lines ending with "= {};" and "= [];". That would make it even more grepable!
I would like to remove ending ";" from lines and also remove spaces before and after "=" so instead of this: ...
cat test.json | grep "json.message.chat.id" | cut -d"=" -f2
If you're going to pipe the output anyway, why not just run it through sed -e "s/ = /=/" -e "s/;$//"
to get the format you like?
Closely related, there could be an option also for removing the useless lines ending with "= {};" and "= [];". That would make it even more grepable!
They're not useless. They may the output correct JSON.
They're not useless. They may the output correct JSON.
Sure, but sometimes you don't care about that. The same option could remove the semicolons, these "empty" lines, and even the equal signs altogether (so that the output is, from the unix point of view, just two columns of NAME VALUE pairs). As @muzzol , often I also spend a lot of sed and awk just to remove this clutter before processing it further.
If this option is easy to add, it would be nice to have.
Piling on, it would be nice to have a mode with guaranteed consistency for how keys are represented. That is, quoting all of them rather than on those that are not identifiers.
json = {};
-json.Host = "headers.jsontest.com";
+json["Host"] = "headers.jsontest.com";
json["User-Agent"] = "gron/0.1";
json["X-Cloud-Trace-Context"] = "6917a823919477919dbc1523584ba25d/11970839830843610056";
quoting all of them
But wouldn't this make the output less greppable in general? I'd rather have all keys without quotes, regardless of whether they are identifiers or not.
I'd rather have all keys without quotes, regardless of whether they are identifiers or not.
That would violate "The output of gron
is valid JavaScript", see https://tc39.es/ecma262/multipage/ecmascript-language-expressions.html#prod-MemberExpression and https://tc39.es/ecma262/multipage/ecmascript-language-lexical-grammar.html#sec-identifier-names-static-semantics-early-errors .
That would violate "The output of
gron
is valid JavaScript"
Sure, and because of this reason the simplified output should not be the default behavior of gron. Still, there may be some value in providing a "super-greppable" uncluttered output for when you don't care that the output is valid javascript (e.g., inside a shell pipeline). For example, I'd like to have an output that looks just like this :
Host headers.jsontest.com
User-Agent gron/0.1
X-Cloud-Trace-Context 6917a823919477919dbc1523584ba25d/11970839830843610056
that is, a text file with two columns that can be directly processed by the standard unix utilities.
Sure, and because of this reason the simplified output should not be the default behavior of gron. Still, there may be some value in providing a "super-greppable" uncluttered output for when you don't care that the output is valid javascript
exactly this. creating simple bash scripts is one of the reasons I choose this tool, it's not really important if origin is a regulated standard or just a line of text.
just to give some context, here's the help for smbclient utility:
smbclient --help
Usage: smbclient service <password>
-R, --name-resolve=NAME-RESOLVE-ORDER Use these name resolution services only
-M, --message=HOST Send message
-I, --ip-address=IP Use this IP to connect to
-E, --stderr Write messages to stderr instead of stdout
-L, --list=HOST Get a list of shares available on a host
-m, --max-protocol=LEVEL Set the max protocol level
-T, --tar=<c|x>IXFvgbNan Command line tar
-D, --directory=DIR Start from directory
-c, --command=STRING Execute semicolon separated commands
-b, --send-buffer=BYTES Changes the transmit/send buffer
-t, --timeout=SECONDS Changes the per-operation timeout
-p, --port=PORT Port to connect to
-g, --grepable Produce grepable output
-q, --quiet Suppress help message
-B, --browse Browse SMB servers using DNS
notice the '-g' option: -g, --grepable Produce grepable output
What if a property name includes the delimiter sequence?
What if a property name includes the delimiter sequence?
Then the output would be slightly ambiguous, but still easily grepable.
This is a feature request for output format configuration.
I would like to remove ending ";" from lines and also remove spaces before and after "=" so instead of this:
json.message.chat.id = 7403466;
I got this
json.message.chat.id=7403466
I think this way will be a lot easier to parse results:
cat test.json | grep "json.message.chat.id" | cut -d"=" -f2
instead of
cat test.json | grep "json.message.chat.id" | cut -d"=" -f2 | cut -d" " -f2- | tr -d";"