diff --git a/jq/script-01.sh b/jq/script-01.sh index 95827f68..006c3f6d 100755 --- a/jq/script-01.sh +++ b/jq/script-01.sh @@ -5,3 +5,5 @@ set -euo pipefail # The input for this script is the person.json file. # TODO: Write a command to output the name of the person. # Your output should be exactly the string "Selma", but should not contain any quote characters. +# We use '-r' to print the name without quotations +jq -r '.name' person.json diff --git a/jq/script-02.sh b/jq/script-02.sh index 21544d67..c6499d97 100755 --- a/jq/script-02.sh +++ b/jq/script-02.sh @@ -5,3 +5,6 @@ set -euo pipefail # The input for this script is the person.json file. # TODO: Write a command to output the address of the person, all on one line, with a comma between each line. # Your output should be exactly the string "35 Fashion Street, London, E1 6PX", but should not contain any quote characters. + +# first it returns an array but we use join to add them toghether with a comma and a space +jq -r '.address | join(", ")' person.json diff --git a/jq/script-03.sh b/jq/script-03.sh index 3566f03b..690a1282 100755 --- a/jq/script-03.sh +++ b/jq/script-03.sh @@ -5,3 +5,6 @@ set -euo pipefail # The input for this script is the person.json file. # TODO: Write a command to output the name of the person, then a comma, then their profession. # Your output should be exactly the string "Selma, Software Engineer", but should not contain any quote characters. + +# Join works on arrays thats why we need to to put values of name and profession in a array to be able to use join +jq -r '[.name, .profession] | join(", ")' person.json diff --git a/jq/script-04.sh b/jq/script-04.sh index 015997e1..b65bc12e 100755 --- a/jq/script-04.sh +++ b/jq/script-04.sh @@ -6,3 +6,6 @@ set -euo pipefail # TODO: Write a command to output just the names of each player, one per line. # Your output should contain 6 lines, each with just one word on it. # Your output should not contain any quote characters. + +# we get the "name" from each object in the array and print it '.[].name' +jq -r '.[].name' scores.json diff --git a/jq/script-05.sh b/jq/script-05.sh index 993fc9ee..3a0d54fc 100755 --- a/jq/script-05.sh +++ b/jq/script-05.sh @@ -5,3 +5,5 @@ set -euo pipefail # The input for this script is the scores.json file. # TODO: Write a command to output the names of each player, as well as their city. # Your output should contain 6 lines, each with two words on it. +jq -r '.[] | [.name, .city] | join(", ")' scores.json +# .[] goes through each object [.name, .city] = creates a temporary array for name and city and then we use join to join name and city diff --git a/jq/script-06.sh b/jq/script-06.sh index 8b6e74c5..7f4f3580 100755 --- a/jq/script-06.sh +++ b/jq/script-06.sh @@ -6,3 +6,7 @@ set -euo pipefail # TODO: Write a command to output just the names of each player along with the score from their first attempt. # Your output should contain 6 lines, each with one word and one number on it. # The first line should be "Ahmed 1" with no quotes. + +# .scores[index 1] +jq -r '.[] | [.name, .scores[0]] | join(" ")' scores.json + \ No newline at end of file diff --git a/jq/script-07.sh b/jq/script-07.sh index d43f93d1..7577a9c6 100755 --- a/jq/script-07.sh +++ b/jq/script-07.sh @@ -6,3 +6,6 @@ set -euo pipefail # TODO: Write a command to output just the names of each player along with the score from their last attempt. # Your output should contain 6 lines, each with one word and one number on it. # The first line should be "Ahmed 4" with no quotes. + +# .scores[-1] = last index +jq -r '.[] | [.name, .scores[-1]] | join(" ")' scores.json diff --git a/jq/script-08.sh b/jq/script-08.sh index 6671fd1b..d69f49ab 100755 --- a/jq/script-08.sh +++ b/jq/script-08.sh @@ -6,3 +6,6 @@ set -euo pipefail # TODO: Write a command to output just the names of each player along with the number of times they've played the game. # Your output should contain 6 lines, each with one word and one number on it. # The first line should be "Ahmed 3" with no quotes. + +# (.scores | length) = length of array +jq -r '.[] | [.name, (.scores | length)] | join(" ")' scores.json diff --git a/jq/script-09.sh b/jq/script-09.sh index c2536a53..a04780d6 100755 --- a/jq/script-09.sh +++ b/jq/script-09.sh @@ -6,3 +6,7 @@ set -euo pipefail # TODO: Write a command to output just the names of each player along with the total scores from all of their games added together. # Your output should contain 6 lines, each with one word and one number on it. # The first line should be "Ahmed 15" with no quotes. + +# (.scores | add) = adding each index of this array +jq -r '.[] | [.name, (.scores | add)] | join(" ")' scores.json + \ No newline at end of file diff --git a/jq/script-10.sh b/jq/script-10.sh index 8e9d75f0..bf6b6323 100755 --- a/jq/script-10.sh +++ b/jq/script-10.sh @@ -5,3 +5,7 @@ set -euo pipefail # The input for this script is the scores.json file. # TODO: Write a command to output the total of adding together all players' first scores. # Your output should be exactly the number 54. +jq -r 'map(.scores[0]) | add' scores.json + +# map(.scores[0]) => a list of first scores of each player +# then we use add to add each number of that array \ No newline at end of file diff --git a/jq/script-11.sh b/jq/script-11.sh index d2337a6b..c9ccc4e4 100755 --- a/jq/script-11.sh +++ b/jq/script-11.sh @@ -5,3 +5,7 @@ set -euo pipefail # The input for this script is the scores.json file. # TODO: Write a command to output the total of adding together all scores from all games from all players. # Your output should be exactly the number 164. +jq -r 'map(.scores) | add | add' scores.json + +# first add combines all numbers in an array +# second array adds all numbers in that array