diff --git a/jq/scores.json b/jq/scores.json index d5f62bf..1daea21 100644 --- a/jq/scores.json +++ b/jq/scores.json @@ -1 +1,8 @@ -[{"name": "Ahmed", "city": "London", "scores": [1, 10, 4]}, {"name": "Basia", "city": "London", "scores": [22, 9, 6]}, {"name": "Mehmet", "city": "Birmingham", "scores": [3, 12, 17]}, {"name": "Leila", "city": "London", "scores": [1]}, {"name": "Piotr", "city": "Glasgow", "scores": [15, 2, 25, 11, 8]}, {"name": "Chandra", "city": "Birmingham", "scores": [12, 6]}] +[ + { "name": "Ahmed", "city": "London", "scores": [1, 10, 4] }, + { "name": "Basia", "city": "London", "scores": [22, 9, 6] }, + { "name": "Mehmet", "city": "Birmingham", "scores": [3, 12, 17] }, + { "name": "Leila", "city": "London", "scores": [1] }, + { "name": "Piotr", "city": "Glasgow", "scores": [15, 2, 25, 11, 8] }, + { "name": "Chandra", "city": "Birmingham", "scores": [12, 6] } +] diff --git a/jq/script-01.sh b/jq/script-01.sh index 95827f6..75e7246 100755 --- a/jq/script-01.sh +++ b/jq/script-01.sh @@ -5,3 +5,13 @@ 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. + + +echo "first solution using cat command and pipeline:" +cat person.json | jq '.name' + +echo "" + +echo "second solution using jq only:" +jq '.name' person.json + diff --git a/jq/script-02.sh b/jq/script-02.sh index 21544d6..e241105 100755 --- a/jq/script-02.sh +++ b/jq/script-02.sh @@ -5,3 +5,16 @@ 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. + +#note to self: +# What Each Part Does +# jq → Calls the jq tool. +# -r → Removes quotes from the output (so the result is a plain string, not JSON). +# .address → Extracts the address array from the JSON. +# | join(", ") → +# Takes all elements in the array: ["35 Fashion Street", "London", "E1 6PX"] +# Joins them into a single string, separated by ", ". +# ❌ Do NOT use .address[] if address is an array of strings +# ✅ Use .address[] when address is an array of objects + +jq -r '.address | join(", ")' person.json diff --git a/jq/script-03.sh b/jq/script-03.sh index 3566f03..880729f 100755 --- a/jq/script-03.sh +++ b/jq/script-03.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, then a comma, then their profession. # Your output should be exactly the string "Selma, Software Engineer", but should not contain any quote characters. + +jq -r '[.name, .profession] | join(", ")' person.json \ No newline at end of file diff --git a/jq/script-04.sh b/jq/script-04.sh index 015997e..756dd67 100755 --- a/jq/script-04.sh +++ b/jq/script-04.sh @@ -6,3 +6,5 @@ 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. + +jq -r '.[].name' scores.json \ No newline at end of file diff --git a/jq/script-05.sh b/jq/script-05.sh index 993fc9e..3706939 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)"' scores.json \ No newline at end of file diff --git a/jq/script-06.sh b/jq/script-06.sh index 8b6e74c..01f5ff5 100755 --- a/jq/script-06.sh +++ b/jq/script-06.sh @@ -6,3 +6,5 @@ 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. + +jq -r '.[] | .scores[0] as $scores | "\(.name) \($scores)" ' scores.json diff --git a/jq/script-07.sh b/jq/script-07.sh index d43f93d..1188670 100755 --- a/jq/script-07.sh +++ b/jq/script-07.sh @@ -6,3 +6,5 @@ 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. + +jq -r '.[] | .scores[-1] as $lastScore | "\(.name) \($lastScore)" ' scores.json \ No newline at end of file diff --git a/jq/script-08.sh b/jq/script-08.sh index 6671fd1..2a25973 100755 --- a/jq/script-08.sh +++ b/jq/script-08.sh @@ -6,3 +6,5 @@ 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. + +jq -r '.[] | "\(.name) \(.scores | length)"' scores.json \ No newline at end of file diff --git a/jq/script-09.sh b/jq/script-09.sh index c2536a5..fa63688 100755 --- a/jq/script-09.sh +++ b/jq/script-09.sh @@ -6,3 +6,13 @@ 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. + +echo "first solution" + +jq -r '.[] | "\(.name) \([.scores[]] | add)"' scores.json + +echo "" + +echo "simpler solution" + +jq -r '.[] | "\(.name) \((.scores | add))"' scores.json \ No newline at end of file diff --git a/jq/script-10.sh b/jq/script-10.sh index 8e9d75f..aca53e7 100755 --- a/jq/script-10.sh +++ b/jq/script-10.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 total of adding together all players' first scores. # Your output should be exactly the number 54. + +jq '[.[].scores[0]] | add' scores.json \ No newline at end of file diff --git a/jq/script-11.sh b/jq/script-11.sh index d2337a6..292a4bf 100755 --- a/jq/script-11.sh +++ b/jq/script-11.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 total of adding together all scores from all games from all players. # Your output should be exactly the number 164. + +jq '[.[].scores[]] | add' scores.json \ No newline at end of file