I was hoping to curl
data into a shell script variable, then use cat
or awk
to operate on that variable as if it was a file.
Is this possible, or is there a workaround? Do I have to save the curl
command into a file?
Do I have to run curl
several times, for each bit of string formatting I want to do?
I am curl
ing ipinfo.io, and want to output the matching lines for "city" and "region". I know how to use awk
and sed
to format the output as desired.
Try for example, curl ipinfo.io/"8.8.8.8"
for the result for a Google DNS IP address.
I'd like to print just "Mountain View" and "California," preferably on the same line, with some common formatting, like "Mountain View, California".
Best Answer
In general there are more appropriate ways of parsing JSON objects, but since in this case the JSON object is very simple you may store
curl
's output in a variable (which is possible) and just use AWK:However unless you want to use
curl
's output multiple times you may just use a pipe:<<<
is a form of input redirection called "here string"; it redirects the STDIN of a command from the terminal to a string.What happens here is that
$var
is expanded between the double quotes; the STDIN of the AWK command is redirected from the terminal to the expanded string and AWK consequently reads the string as its input file.