5 ms·
jq has been a lifesaver for me parsing json in bash. Of course, it's an external utility not present by default in most systems. Another thing to consider is m
by zxexz 6y ago
jq has been a lifesaver for me parsing json in bash. Of course, it's an external utility not present by default in most systems.
Another thing to consider is more of a middle-ground approach. Most systems do have a python interpreter, so you can use a lot of base python without worrying about dependency hell. I use inline python in bash all the time, e.g.
ls | python -c 'import sys,json;lines=sys.stdin.read();print(json.dumps(list(filter(bool,lines.split("\n"))),sort_keys=True,indent=2))'
You can even use variable substitution, if you surround the python code in double quotes. Even mix f-strings and bash substitution
python -c "print(f'Congrats, ${USER}, you are visitor number ${RANDOM}. This is {__name__}, running in $(pwd)')"
- moreaccountspls 6y agoGreat trick with using the python standard lib! Thanks for posting that. edit: You probably already know this, but for anyone reading along, piping `ls` is unsafe if you plan to use the paths for anything except for printing them out. A path on linux can contain any byte except for NULL, so when `ls` prints them out, you can get broken behavior if you try to break on newlines.
- deleted 6y ago[deleted]
- kbenson 6y agoOr use a heredoc to not worry about competing quote chars: # python << EOPYTHON print("Congrats, ${USER}") print("You are visitor ${RANDOM}") print("This is {__name__}, running in ${pwd}") print("It's a heredoc to allow both quote characters") EOPYTHON