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| Elhadj Abdoul Diallo| Module-Tools | WEEK1 - Individual-shell-tools #16

Open
wants to merge 44 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
911cd92
ls --> Implement directory listing in script-01.sh
Feb 26, 2025
8b16334
ls --> Implement file listing in child-directory for script-02.sh
Feb 26, 2025
f062d6d
ls --> Implement recursive file listing in script-03.sh
Feb 26, 2025
18080a1
ls --> Implement file listing sorted by modification time in script-0…
Feb 26, 2025
2798631
ls --> Implement file listing sorted in the opposite order in script-…
Feb 26, 2025
8467560
cat --> Implement command to output contents of helper-1.txt in scrip…
Feb 26, 2025
68070ec
cat --> Implement command to output contents of all text files in hel…
Feb 26, 2025
1928e79
cat --> Implement command to output numbered contents of helper-3.txt…
Feb 26, 2025
336b8aa
cat --> Implement command to output numbered contents of all text fil…
Feb 26, 2025
1211ee7
wc --> Implement command to output the number of words in helper-3.tx…
Feb 26, 2025
50606f2
wc --> Implement command to output the number of lines in helper-3.tx…
Feb 26, 2025
5bb3577
wc --> Add command to output word, line, and byte counts for all text…
Feb 26, 2025
c445a6b
grep --> Implement command to output lines spoken by the Doctor in di…
Feb 26, 2025
86617b7
grep --> Implement command to output lines containing 'Doctor' (regar…
Feb 26, 2025
65f3f5b
grep --> Implement command to count lines containing 'Doctor' (case i…
Feb 26, 2025
ae357f2
grep --> Implement command to output lines not containing 'Hello' (ca…
Feb 26, 2025
eb4109f
grep --> Implement command to output lines containing 'cure' and the …
Feb 26, 2025
988f5f9
grep --> Implement command to output names of .txt files containing l…
Feb 26, 2025
d47bfbb
grep --> Update command to output names of .txt files containing line…
Feb 26, 2025
dc54635
grep --> Implement command to count lines of dialogue spoken by the D…
Feb 26, 2025
ec4ce2a
sed --> Implement command to replace all occurrences of 'i' with 'I' …
Feb 26, 2025
7d99d30
sed --> Implement command to remove all numbers from input.txt in scr…
Feb 26, 2025
b79d94d
sed --> Implement command to remove lines containing numbers from inp…
Feb 26, 2025
a7e7ada
sed --> Implement command to replace occurrences of "We'll" with "We …
Feb 26, 2025
08b42da
sed --> Implement command to reorder lines starting with a number in …
Feb 26, 2025
e195344
sed --> Implement command to normalize spaces after commas in input.t…
Feb 26, 2025
f8f08c5
awk --> Implement command to output player names from scores-table.tx…
Feb 26, 2025
1e8bf64
awk --> Implement command to output player names and their cities in …
Feb 26, 2025
234070e
awk --> Implement command to output player names and their first atte…
Feb 26, 2025
f65408d
awk --> Output player names in London with their last attempt score i…
Feb 26, 2025
df28eb6
awk --> Output player names along with their game play counts in scri…
Feb 26, 2025
1a43a45
awk --> Implement command to output the total of all players' first s…
Feb 26, 2025
779cb97
awk --> Implement command to output player names along with the total…
Feb 26, 2025
7588543
awk --> update by using the -c flag to count lines containing 'Doctor…
Feb 26, 2025
5715882
Revert "awk --> Implement command to output player names along with t…
Feb 26, 2025
16e8e79
grep--> Simplify command to count lines containing 'Doctor' in dialog…
Feb 26, 2025
940f691
Merge branch 'individual-shell-tools' of https://github.com/eediallo/…
Feb 26, 2025
3bb6a94
awk --> Implement command to output player names along with the total…
Feb 26, 2025
e2abd25
cat --> Replace 'cat -n' with 'cat | nl' to number lines in script-03.sh
Mar 2, 2025
3dba76e
grep --> fix: Adjust grep command syntax for case-insensitive search …
Mar 2, 2025
c544e75
grep --> Fix command to count lines of dialogue for the Doctor in scr…
Mar 2, 2025
7fe9ad0
ls --> fix: Simplify directory listing command in script-03.sh by rem…
Mar 2, 2025
8828953
ls --> fix: Remove unnecessary cd command in script-01.sh for listing…
Mar 2, 2025
697e210
fix: Use variable for directory path in script-04.sh to improve reada…
Mar 2, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions individual-shell-tools/awk/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 just the names of each player in `scores-table.txt`.
# Your output should contain 6 lines, each with just one word on it.
awk '{print $1}' scores-table.txt
1 change: 1 addition & 0 deletions individual-shell-tools/awk/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 each player, as well as their city.
# Your output should contain 6 lines, each with two words on it, separated by a space.
awk '{print $1, $2}' scores-table.txt
2 changes: 2 additions & 0 deletions individual-shell-tools/awk/script-03.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,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".

awk '{print $1, $3}' scores-table.txt
Copy link

Choose a reason for hiding this comment

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

how would your script look like if you used printf instead of print? what would be the advantage (if any) to use printf?

Copy link
Author

Choose a reason for hiding this comment

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

That's a good question! I've never tried printf before with awk but I guess it would allow me to format the result but as the content of the file is alreay in text format print is enough in this case

6 changes: 3 additions & 3 deletions individual-shell-tools/awk/script-04.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@

set -euo pipefail

# TODO: Write a command to output just the names of each player in London along with the score from their last attempt.
# Your output should contain 3 lines, each with one word and one number on it.
# The first line should be "Ahmed 4".
# Output the names of each player in London along with the score from their last attempt.
# For lines with fewer than 5 columns, print the last column.
awk '{if (NF >= 5 && $2 == "London") print $1, $5; else if (NF < 5 && $2 == "London") print $1, $NF}' scores-table.txt
Copy link

Choose a reason for hiding this comment

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

wow, very nice work! (especially, because if you look at the current the latest changes for this in the repo, the condition for "For lines with fewer than 5 columns, print the last column." was taken out)

Copy link
Author

Choose a reason for hiding this comment

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

That's right!

3 changes: 2 additions & 1 deletion individual-shell-tools/awk/script-05.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

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.
# 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".
awk '{print $1, NF-2}' scores-table.txt
1 change: 1 addition & 0 deletions individual-shell-tools/awk/script-06-stretch.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 output the total of adding together all players' first scores.
# Your output should be exactly the number 54.
awk '{sum += $3} END{print sum}' scores-table.txt
1 change: 1 addition & 0 deletions individual-shell-tools/awk/script-07-stretch.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@ set -euo pipefail
# TODO: Write a command to output just the names of each player along with the total of adding all of that player's scores.
# Your output should contain 6 lines, each with one word and one number on it.
# The first line should be "Ahmed 15". The second line should be "Basia 37"
awk '{ for(i = 3; i <= NF; i++) sum += $i; print $1, sum; sum = 0 }' scores-table.txt
Copy link

Choose a reason for hiding this comment

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

i noticed you set initial value for sum at the end of the block - would it be better to initialise sum in another way? (regardless, your solution does print out the correct solution!)

Copy link
Author

Choose a reason for hiding this comment

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

Yes, I could have done it at the biginning like this:

awk '{ sum= 0; for(i = 3; i <= NF; i++) sum += $i; print $1, sum}' scores-table.txt

1 change: 1 addition & 0 deletions individual-shell-tools/cat/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 contents of the helper-1.txt file inside the helper-files directory to the terminal.
# The output of this command should be "Once upon a time...".
cat ../helper-files/helper-1.txt
2 changes: 2 additions & 0 deletions individual-shell-tools/cat/script-02.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,5 @@ set -euo pipefail
# It looked delicious.
# I was tempted to take a bite of it.
# But this seemed like a bad idea...

cat ../helper-files/*.txt
1 change: 1 addition & 0 deletions individual-shell-tools/cat/script-03.sh
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,4 @@ set -euo pipefail
# 1 It looked delicious.
# 2 I was tempted to take a bite of it.
# 3 But this seemed like a bad idea...
cat ../helper-files/helper-3.txt | nl
2 changes: 2 additions & 0 deletions individual-shell-tools/cat/script-04-stretch.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,5 @@ set -euo pipefail
# 3 It looked delicious.
# 4 I was tempted to take a bite of it.
# 5 But this seemed like a bad idea...

cat -n ../helper-files/*.txt
1 change: 1 addition & 0 deletions individual-shell-tools/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 every line in dialogue.txt said by the Doctor.
# The output should contain 6 lines.
grep ^Doctor dialogue.txt
Copy link

Choose a reason for hiding this comment

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

if you would you use double quotes, how would this solution look like? what would be the advantage (if any) ?

Copy link
Author

Choose a reason for hiding this comment

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

the result would be the same. The advantage of using the double quote is that it handle speacial characters. This command is working because there is one does not include any special character.

1 change: 1 addition & 0 deletions individual-shell-tools/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 every line in dialogue.txt that contains the word Doctor (regardless of case).
# The output should contain 9 lines.
grep -i doctor dialogue.txt
1 change: 1 addition & 0 deletions individual-shell-tools/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 number of lines in dialogue.txt that contain the word Doctor (regardless of case).
# The output should be exactly the number 9.
grep doctor -ic dialogue.txt
1 change: 1 addition & 0 deletions individual-shell-tools/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 output every line in dialogue.txt that does not contain the word "Hello" (regardless of case).
# The output should contain 10 lines.
grep hello -iv dialogue.txt
1 change: 1 addition & 0 deletions individual-shell-tools/grep/script-05.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 every line in dialogue.txt that contains the string "cure", as well as the line before that line.
# The output should contain two pairs of two lines of text (with a separator between them).
grep cure -B1 dialogue.txt
2 changes: 2 additions & 0 deletions individual-shell-tools/grep/script-06.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,5 @@ set -euo pipefail

# TODO: Write a command to output the name of every `.txt` file in this directory which contains a line of dialogue said by the Doctor.
# The output should contain two filenames.

grep ^Doctor -il *.txt
1 change: 1 addition & 0 deletions individual-shell-tools/grep/script-07.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, for each `.txt` file in this directory, how many lines of dialogue the Doctor has.
# The output should show that dialogue.txt contains 6 lines, dialogue-2.txt contains 2, and dialogue-3.txt contains 0.
grep ^Doctor -ic *.txt
1 change: 1 addition & 0 deletions individual-shell-tools/ls/script-01.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,4 @@ fi

# TODO: Write a command to list the files and folders in this directory.
# The output should be a list of names including child-directory, script-01.sh, script-02.sh, and more.
ls
2 changes: 2 additions & 0 deletions individual-shell-tools/ls/script-02.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,5 @@ set -euo pipefail

# TODO: Write a command which lists all of the files in the directory named child-directory.
# The output should be a list of names: helper-1.txt, helper-2.txt, helper-3.txt.
cd ../ls/child-directory
ls
1 change: 1 addition & 0 deletions individual-shell-tools/ls/script-03.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@ set -euo pipefail
# TODO: Write a command which _recursively_ lists all of the files and folders in this directory _and_ all of the files inside those folders.
# The output should be a list of names including: child-directory, script-01.sh, helper-1.txt (and more).
# The formatting of the output doesn't matter.
ls -R
5 changes: 5 additions & 0 deletions individual-shell-tools/ls/script-04.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,13 @@ echo "First exercise (sorted newest to oldest):"
# TODO: Write a command which lists the files in the child-directory directory, one per line, sorted so that the most recently modified file is first.
# The output should be a list of names in this order, one per line: helper-3.txt, helper-1.txt, helper-2.txt.

DIR=../ls/child-directory

ls -1t $DIR

echo "Second exercise (sorted oldest to newest):"

# TODO: Write a command which does the same as above, but sorted in the opposite order (oldest first).
# The output should be a list of names in this order, one per line: helper-2.txt, helper-1.txt, helper-3.txt.

ls -1tr $DIR
1 change: 1 addition & 0 deletions individual-shell-tools/sed/script-01.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@ set -euo pipefail
# TODO: Write a command to output input.txt with all occurrences of the letter `i` replaced with `I`.
# The output should contain 11 lines.
# The first line of the output should be: "ThIs Is a sample fIle for experImentIng with sed.".
sed s/i/I/g input.txt
Copy link

Choose a reason for hiding this comment

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

what would the option -e mean for this script?

Copy link
Author

Choose a reason for hiding this comment

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

it specifies multiple editing commands in a single sed invocation. But is not needed in this case because there is only one command being executed.

1 change: 1 addition & 0 deletions individual-shell-tools/sed/script-02.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@ set -euo pipefail
# TODO: Write a command to output input.txt with numbers removed.
# The output should contain 11 lines.
# Line 6 of the output should be " Alisha".
sed 's/[0-9]*//g' input.txt
1 change: 1 addition & 0 deletions individual-shell-tools/sed/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 input.txt removing any line which contains a number.
# The output should contain 6 lines.
sed -e '/[0-9]/d' input.txt
1 change: 1 addition & 0 deletions individual-shell-tools/sed/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 output input.txt replacing every occurrence of the string "We'll" with "We will".
# The output should contain 11 lines.
sed "s/We'll/We will/g" input.txt
1 change: 1 addition & 0 deletions individual-shell-tools/sed/script-05.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@ set -euo pipefail
# If a line starts with a number and a space, make the line instead end with a space and the number.
# So line 6 which currently reads "37 Alisha" should instead read "Alisha 37".
# The output should contain 11 lines.
sed -E 's/^([0-9]+) (.*)$/\2 \1/' input.txt
Copy link

Choose a reason for hiding this comment

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

(optional) how would you change this script if you need to use basic regular expressions? (congrats on using ERE ! )

2 changes: 2 additions & 0 deletions individual-shell-tools/sed/script-06.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,5 @@ set -euo pipefail
# The output should contain 11 lines.
# Line 3 should be "It contains many lines, and there are some things you may want to do with each of them.".
# Line 11 should be "We also should remember, when we go shopping, to get 4 items: oranges, cheese, bread, olives.".

sed 's/, */, /g' input.txt
1 change: 1 addition & 0 deletions individual-shell-tools/wc/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 number of words in the file helper-files/helper-3.txt.
# The output should include the number 19. The output should not include the number 92.
wc -w ../helper-files/helper-3.txt
1 change: 1 addition & 0 deletions individual-shell-tools/wc/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 number of lines in the file helper-files/helper-3.txt.
# The output should include the number 3. The output should not include the number 19.
wc -l ../helper-files/helper-3.txt
1 change: 1 addition & 0 deletions individual-shell-tools/wc/script-03.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@ set -euo pipefail
# 1 7 39 ../helper-files/helper-2.txt
# 3 19 92 ../helper-files/helper-3.txt
# 5 30 151 total
wc ../helper-files/*.txt