From 0912ee83387b639f63c3f03fff6e9f51d31a022d Mon Sep 17 00:00:00 2001 From: Rashaad Ebrahim Date: Fri, 14 Nov 2025 21:23:08 +0200 Subject: [PATCH 1/4] ls-grep exercises complete --- shell-pipelines/ls-grep/script-01.sh | 2 ++ shell-pipelines/ls-grep/script-02.sh | 2 ++ shell-pipelines/ls-grep/script-03.sh | 2 ++ shell-pipelines/ls-grep/script-04.sh | 2 ++ 4 files changed, 8 insertions(+) diff --git a/shell-pipelines/ls-grep/script-01.sh b/shell-pipelines/ls-grep/script-01.sh index 8c7d968a2..39cd33af3 100755 --- a/shell-pipelines/ls-grep/script-01.sh +++ b/shell-pipelines/ls-grep/script-01.sh @@ -3,4 +3,6 @@ set -euo pipefail # TODO: Write a command to output the names of the files in the sample-files directory whose name contains at least one upper case letter. +ls sample-files/ | grep '[A-Z]' + # Your output should contain 11 files. diff --git a/shell-pipelines/ls-grep/script-02.sh b/shell-pipelines/ls-grep/script-02.sh index 16f5f71d9..82aaa9443 100755 --- a/shell-pipelines/ls-grep/script-02.sh +++ b/shell-pipelines/ls-grep/script-02.sh @@ -3,4 +3,6 @@ set -euo pipefail # TODO: Write a command to output the names of the files in the sample-files directory whose name starts with an upper case letter. +ls sample-files/ | grep '^[A-Z]' + # Your output should contain 10 files. diff --git a/shell-pipelines/ls-grep/script-03.sh b/shell-pipelines/ls-grep/script-03.sh index a302ab036..90b2c67bd 100755 --- a/shell-pipelines/ls-grep/script-03.sh +++ b/shell-pipelines/ls-grep/script-03.sh @@ -3,4 +3,6 @@ set -euo pipefail # TODO: Write a command to output the names of the files in the sample-files directory whose name starts with an upper case letter and doesn't contain any other upper case letters. +ls sample-files/ | grep '^[A-Z][a-z]*$' + # Your output should contain 7 files. diff --git a/shell-pipelines/ls-grep/script-04.sh b/shell-pipelines/ls-grep/script-04.sh index c000b7e3b..123c1a2e1 100755 --- a/shell-pipelines/ls-grep/script-04.sh +++ b/shell-pipelines/ls-grep/script-04.sh @@ -3,4 +3,6 @@ set -euo pipefail # TODO: Write a command to count the number of files in the sample-files directory whose name starts with an upper case letter and doesn't contain any other upper case letters. +ls sample-files/ | grep '^[A-Z][a-z]*$' | wc -l + # Your output should be the number 7. From d96c2806fb726b7525ae98f86c802b7d7bfd8425 Mon Sep 17 00:00:00 2001 From: Rashaad Ebrahim Date: Fri, 14 Nov 2025 22:35:48 +0200 Subject: [PATCH 2/4] sort-uniq-head-tail exercises complete --- shell-pipelines/sort-uniq-head-tail/script-01.sh | 2 ++ shell-pipelines/sort-uniq-head-tail/script-02.sh | 1 + shell-pipelines/sort-uniq-head-tail/script-03.sh | 2 ++ shell-pipelines/sort-uniq-head-tail/script-04.sh | 1 + shell-pipelines/sort-uniq-head-tail/script-05.sh | 1 + shell-pipelines/sort-uniq-head-tail/script-06.sh | 2 ++ shell-pipelines/sort-uniq-head-tail/script-07.sh | 2 ++ 7 files changed, 11 insertions(+) diff --git a/shell-pipelines/sort-uniq-head-tail/script-01.sh b/shell-pipelines/sort-uniq-head-tail/script-01.sh index 171e1f989..56c30e000 100755 --- a/shell-pipelines/sort-uniq-head-tail/script-01.sh +++ b/shell-pipelines/sort-uniq-head-tail/script-01.sh @@ -4,4 +4,6 @@ set -euo pipefail # The input for this script is the scores-table.txt file. # TODO: Write a command to output scores-table.txt, with lines sorted by the person's name. +sort scores-table.txt + # The first line of your output should be "Ahmed London 1 10 4" (with no quotes). And the third line should be "Chandra Birmingham 12 6". diff --git a/shell-pipelines/sort-uniq-head-tail/script-02.sh b/shell-pipelines/sort-uniq-head-tail/script-02.sh index 29c3c2524..89086c5d7 100755 --- a/shell-pipelines/sort-uniq-head-tail/script-02.sh +++ b/shell-pipelines/sort-uniq-head-tail/script-02.sh @@ -4,4 +4,5 @@ set -euo pipefail # The input for this script is the scores-table.txt file. # TODO: Write a command to output scores-table.txt, with lines sorted by the person's first score, descending. +sort -k3nr scores-table.txt # The first line of your output should be "Basia London 22 9 6" (with no quotes). diff --git a/shell-pipelines/sort-uniq-head-tail/script-03.sh b/shell-pipelines/sort-uniq-head-tail/script-03.sh index bcbaf3420..33f2f0123 100755 --- a/shell-pipelines/sort-uniq-head-tail/script-03.sh +++ b/shell-pipelines/sort-uniq-head-tail/script-03.sh @@ -4,6 +4,8 @@ set -euo pipefail # The input for this script is the scores-table.txt file. # TODO: Write a command to output scores-table.txt, with shows the lines for the three players with the highest first score, in descending order. +sort -k3nr scores-table.txt | head -n3 + # Your output should be: # Basia London 22 9 6 # Piotr Glasgow 15 2 25 11 8 diff --git a/shell-pipelines/sort-uniq-head-tail/script-04.sh b/shell-pipelines/sort-uniq-head-tail/script-04.sh index 65a5cfba8..b31fe4c5f 100755 --- a/shell-pipelines/sort-uniq-head-tail/script-04.sh +++ b/shell-pipelines/sort-uniq-head-tail/script-04.sh @@ -4,4 +4,5 @@ set -euo pipefail # The input for this script is the scores-table.txt file. # TODO: Write a command to output scores-table.txt, with shows the line for the player whose first score was the second highest. +sort -k3nr scores-table.txt | head -n2 | tail -n1 # Your output should be: "Piotr Glasgow 15 2 25 11 8" (without quotes). diff --git a/shell-pipelines/sort-uniq-head-tail/script-05.sh b/shell-pipelines/sort-uniq-head-tail/script-05.sh index a93cd9f9d..9701a2261 100755 --- a/shell-pipelines/sort-uniq-head-tail/script-05.sh +++ b/shell-pipelines/sort-uniq-head-tail/script-05.sh @@ -4,5 +4,6 @@ set -euo pipefail # The input for this script is the events.txt file. # TODO: Write a command to show a list of all events that have happened, without duplication. +sort events.txt | uniq # The order they're displayed doesn't matter, but we never want to see the same event listed twice. # Your output should contain 6 lines. diff --git a/shell-pipelines/sort-uniq-head-tail/script-06.sh b/shell-pipelines/sort-uniq-head-tail/script-06.sh index 715c7ae5c..73b514413 100755 --- a/shell-pipelines/sort-uniq-head-tail/script-06.sh +++ b/shell-pipelines/sort-uniq-head-tail/script-06.sh @@ -4,4 +4,6 @@ set -euo pipefail # The input for this script is the events.txt file. # TODO: Write a command to show how many times anyone has entered and exited. +awk '{print $1}' events.txt | sort | uniq -c + # It should be clear from your script's output that there have been 5 Entry events and 4 Exit events. diff --git a/shell-pipelines/sort-uniq-head-tail/script-07.sh b/shell-pipelines/sort-uniq-head-tail/script-07.sh index 7fd07e1ff..3781f37da 100755 --- a/shell-pipelines/sort-uniq-head-tail/script-07.sh +++ b/shell-pipelines/sort-uniq-head-tail/script-07.sh @@ -4,5 +4,7 @@ set -euo pipefail # The input for this script is the events-with-timestamps.txt file. # TODO: Write a command to show how many times anyone has entered and exited. +tail -n +2 events-with-timestamps.txt | awk '{print $3}' | sort | uniq -c + # It should be clear from your script's output that there have been 5 Entry events and 4 Exit events. # The word "Event" should not appear in your script's output. From a78ffb8f754f30ff2c600b37f9fa32a73a54439f Mon Sep 17 00:00:00 2001 From: Rashaad Ebrahim Date: Fri, 14 Nov 2025 22:44:58 +0200 Subject: [PATCH 3/4] tr exercises complete --- shell-pipelines/tr/script-01.sh | 1 + shell-pipelines/tr/script-02.sh | 1 + 2 files changed, 2 insertions(+) diff --git a/shell-pipelines/tr/script-01.sh b/shell-pipelines/tr/script-01.sh index 8bb0211e9..f91ef30d3 100755 --- a/shell-pipelines/tr/script-01.sh +++ b/shell-pipelines/tr/script-01.sh @@ -6,3 +6,4 @@ set -euo pipefail # The author got feedback that they're using too many exclamation marks (!). # # TODO: Write a command to output the contents of text.txt with every exclamation mark (!) replaced with a full-stop (.). +tr '!' '.' < text.txt diff --git a/shell-pipelines/tr/script-02.sh b/shell-pipelines/tr/script-02.sh index cf3a503a2..bae0cbd98 100755 --- a/shell-pipelines/tr/script-02.sh +++ b/shell-pipelines/tr/script-02.sh @@ -7,3 +7,4 @@ set -euo pipefail # so every Y should be a Z, and every Z should be a Y! # # TODO: Write a command to output the contents of text.txt with every Y and Z swapped (both upper and lower case). +tr 'zyZY' 'yzYZ' < text.txt \ No newline at end of file From e730dc46b3f642e05c4d08cea38318c145d3247d Mon Sep 17 00:00:00 2001 From: Rashaad Ebrahim Date: Fri, 21 Nov 2025 01:22:11 +0200 Subject: [PATCH 4/4] Updated ls-grep script-03.sh --- shell-pipelines/ls-grep/script-03.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell-pipelines/ls-grep/script-03.sh b/shell-pipelines/ls-grep/script-03.sh index 90b2c67bd..0e5888108 100755 --- a/shell-pipelines/ls-grep/script-03.sh +++ b/shell-pipelines/ls-grep/script-03.sh @@ -3,6 +3,6 @@ set -euo pipefail # TODO: Write a command to output the names of the files in the sample-files directory whose name starts with an upper case letter and doesn't contain any other upper case letters. -ls sample-files/ | grep '^[A-Z][a-z]*$' +ls sample-files/ | grep '^[A-Z][^A-Z]*$' # Your output should contain 7 files.