Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LONDON SDC | Pooriya Ketabi | Module-Tools | Sprint-2 | Shell pipelines exercises #57

Open
wants to merge 13 commits into
base: main
Choose a base branch
from
1 change: 1 addition & 0 deletions shell-pipelines/ls-grep/script-01.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@ 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.
# Your output should contain 11 files.
ls sample-files | grep [A-Z]
1 change: 1 addition & 0 deletions shell-pipelines/ls-grep/script-02.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@ 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.
# Your output should contain 10 files.
ls sample-files | grep ^[A-Z]
1 change: 1 addition & 0 deletions shell-pipelines/ls-grep/script-03.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@ 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.
# Your output should contain 7 files.
ls sample-files | grep ^[A-Z][^A-Z]*$
1 change: 1 addition & 0 deletions shell-pipelines/ls-grep/script-04.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@ 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.
# Your output should be the number 7.
ls sample-files | grep ^[A-Z][^A-Z]*$ | wc -l
1 change: 1 addition & 0 deletions shell-pipelines/sort-uniq-head-tail/script-01.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@ 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.
# 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".
sort scores-table.txt
1 change: 1 addition & 0 deletions shell-pipelines/sort-uniq-head-tail/script-02.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@ 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.
# The first line of your output should be "Basia London 22 9 6" (with no quotes).
sort -k3 -nr scores-table.txt
1 change: 1 addition & 0 deletions shell-pipelines/sort-uniq-head-tail/script-03.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@ set -euo pipefail
# Basia London 22 9 6
# Piotr Glasgow 15 2 25 11 8
# Chandra Birmingham 12 6
sort -k3 -nr scores-table.txt | head -n 3
1 change: 1 addition & 0 deletions shell-pipelines/sort-uniq-head-tail/script-04.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@ 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.
# Your output should be: "Piotr Glasgow 15 2 25 11 8" (without quotes).
sort -k3,3nr scores-table.txt | head -n 2 | tail -n 1
1 change: 1 addition & 0 deletions shell-pipelines/sort-uniq-head-tail/script-05.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@ set -euo pipefail
# TODO: Write a command to show a list of all events that have happened, without duplication.
# 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.
sort events.txt | uniq
1 change: 1 addition & 0 deletions shell-pipelines/sort-uniq-head-tail/script-06.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@ 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.
# It should be clear from your script's output that there have been 5 Entry events and 4 Exit events.
sort events.txt | uniq -c
Comment on lines 7 to +8
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure this quite answers the question - the prompt is that it should be clear that there are 5 Entry events and 4 Exit events, but the output of this is:

   2 Entry German
   1 Entry Mariana
   2 Entry Sally
   1 Exit German
   1 Exit Mariana
   2 Exit Sally

I can add those numbers up myself to get to 5 and 4, but ideally the script you produce would do that for me?

4 changes: 4 additions & 0 deletions shell-pipelines/sort-uniq-head-tail/script-07.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,7 @@ set -euo pipefail
# TODO: Write a command to show how many times anyone has entered and exited.
# 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.
echo "Entry:"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This works, but isn't super general - imagine in the future a new event type got added, perhaps "Refused" - can you rewrite this so that it will work for any events that happen, not just Entry and Exit?

grep -o 'Entry' events-with-timestamps.txt | wc -l
echo "Exit:"
grep -o 'Exit' events-with-timestamps.txt | wc -l
3 changes: 3 additions & 0 deletions shell-pipelines/tr/script-01.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,6 @@ 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 (.).

# cat text.txt | sed 's/!/./g'
cat text.txt | tr '!' '.'
1 change: 1 addition & 0 deletions shell-pipelines/tr/script-02.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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).
cat text.txt | tr 'zZyY' 'yYzZ'