Upload files to "OS/bash/Week4"

Signed-off-by: Aadit Agrawal <tech@aaditagrawal.com>
This commit is contained in:
Aadit Agrawal 2025-01-24 10:06:30 +05:30
parent 3d5dfd6481
commit 5b0eda8b4e
5 changed files with 108 additions and 0 deletions

10
OS/bash/Week4/q2.sh Normal file
View File

@ -0,0 +1,10 @@
#!/bin/sh
echo "Deleteing the following files"
for file in "$@";do
echo "$file"
rm -i "$file"
done
echo "All files deleted successfully"

26
OS/bash/Week4/q3.sh Normal file
View File

@ -0,0 +1,26 @@
#!/bin/bash
selection_sort()
{
local arr=("$@") # array declaration
local n=${#arr[@]}
for ((i=0; i<n-1; i++)); do
min=$i
for ((j=i+1; j<n; j++)); do
if [[ ${arr[j]} < ${arr[min]} ]]; then
min=$j
fi
done
temp="${arr[min]}"
arr[min]="${arr[i]}"
arr[i]="$temp"
done
for element in "${arr[@]}"; do
echo "$element"
done
}
selection_sort "$@"

24
OS/bash/Week4/q4.sh Normal file
View File

@ -0,0 +1,24 @@
#!/bin/bash
opt="$1"
file="$2"
case "$opt" in
-linecount)
result=$(wc -l < "$file")
echo "Line count in $file: $result"
;;
-wordcount)
result=$(wc -w < "$file")
echo "Word count in $file: $result"
;;
-charcount)
result=$(wc -c < "$file")
echo "Character count in $file: $result"
;;
*)
echo "Invalid option. Please use -linecount, -wordcount, or -charcount."
exit 1
;;
esac

38
OS/bash/Week4/q5.sh Normal file
View File

@ -0,0 +1,38 @@
#!/bin/bash
num_patterns=$(( $# ))
patterns=("${@:1:num_patterns}")
input_file="${!num_patterns}"
while true;do
echo "a. Search the patterns in the given input file."
echo "b. Delete all occurrences of the pattern in the given input file."
echo "c. Exit"
read choice
case "$choice" in
a)
echo "Searching patterns in $input_file:"
for pattern in "${patterns[@]}"; do
grep "$pattern" "$input_file"
done
;;
b)
echo "Deleting occurrences of patterns in $input_file:"
for pattern in "${patterns[@]}"; do
sed -i "s/$pattern//g" "$input_file"
done
echo "Occurrences deleted."
;;
c)
echo "Exiting..."
exit 0
;;
*)
echo "Invalid choice. Please enter 'a', 'b', or 'c'."
;;
esac
done

View File

@ -0,0 +1,10 @@
## Lab 4
### Lab Exercises
Q1. `q1.sh` - Duplication - `cp` of `$1` arg (first argument).
Q2. `q2.sh` - Deletion - `rm` of all `$@` files using `for` loop.
Q3. `q3.sh` - String Sort - Selection sort using loops and `if` and `echo`.
Q4. `q4.sh` - File TypeCounter - Word/Line/CharCount of file via switch `case` statement and passing various commands.
Q5. `q5.sh` - Pattern Recognition - `grep` for finding the pattern, `sed` for deleting the pattern, and `exit` for killing the pattern.