Script: decreaseNum.sh
#!/bin/bash#-----------------------------------------------#user inputnum=$1temp=''
while [ $num -gt 0 ]
do
temp+="$num, "
num=$(( $num - 1 ))
done
temp=$(echo $temp | sed 's/,$//')
All about LINUX, Shell Script, Bash Script, Windows PowerShell, PowerShell Scripting, automation on windows, automation on LINUX, automation script, automation, Automating regular tasks, Any task in PowerShell, any task in shell script,
#!/bin/bash#-----------------------------------------------#user inputnum=$1temp=''
Write a shell script, which gives back the average grade of a student The student name we should give as a parameter! If you give a name that is not in the data file, please write out an error message and write out the list of the names (Just the names without the grades!!!) as a help!
input file: class.txt
SCRIPT:
#!/bin/bash# Variable Declaration
input_file="./class.txt"
name=$1
average=0
err_msg="\n\tPlease pass a student name to the script. \n\te.g.: ./average.sh Tom \n"
name_list=`cat class.txt | awk '(NR != 1) {print $1}' | tr "\n" "," | sed -e 's/,$//' -e 's/,/, /g' `
#---------------------------------------------------------------------------------------------
if [ -z "$name" ]
then
echo -e "$err_msg"
else
record=$(grep -w "$name" $input_file)
if [ -n "$record" ]
then
#sum=$(echo $a | awk '{sum=0; for (i=2; i<=NF; i++) { sum +=i} print sum }')
average=$(echo $record | awk '{sum=0; for (i=2; i<=NF; i++) { sum +=$i} print sum/(NF - 1) }')
echo -e "\t $name $average \n"
else
echo -e "No $name is in the list. There are: $name_list"
fi
fi
let's check the output:
We need to write from 000 to 999 in a file. As these are consecutive numbers we will be using "Brace Expansion"
Let's Create a file by using the touch command.
Script:
#create an empty file
touch output.txt#using brace expansion with foor loopfor i in {000..999} #this is brace expansiondo#append data to output.txtecho $i >> output.txtdone
Output:
To see the output use bellow command
cat output.txt | more
Shell Script to find the 5 most frequent words in an article.
Article:
The company's rapid growth since incorporation has triggered a chain of products, acquisitions, and partnerships beyond Google's core search engine (Google Search). It offers services designed for work and productivity (Google Docs, Google Sheets, and Google Slides), email (Gmail), scheduling and time management (Google Calendar), cloud storage (Google Drive), instant messaging and video chat (Duo, Hangouts, Chat, and Meet), language translation (Google Translate), mapping and navigation (Google Maps, Waze, Google Earth, and Street View), podcast hosting (Google Podcasts), video sharing (YouTube), blog publishing (Blogger), note-taking (Google Keep and Google Jamboard), and photo organizing and editing (Google Photos). The company leads the development of the Android mobile operating system, the Google Chrome web browser, and Chrome OS, a lightweight operating system based on the Chrome browser. Google has moved increasingly into hardware; from 2010 to 2015, it partnered with major electronics manufacturers in the production of its Nexus devices, and it released multiple hardware products in October 2016, including the Google Pixel smartphone, Google Home smart speaker, Google Wifi mesh wireless router, and Google Daydream virtual reality headset. Google has also experimented with becoming an Internet carrier (Google Fiber, Google Fi, and Google Station)
let's store the text in a file named 'google.txt'
Command:
cat google.txt | tr '[ :upper: ]' '[ :lower: ]' | grep -oE '\w+' | grep -vE "and|has|of|the|has|with|an" | sort | uniq -c | sort -nr | head -n 5
Output:
cat - to display the content of the file
tr '[ :upper: ]' '[ :lower: ]' - convert all uppercase to lowercase
grep - to find particular words
sort - sort the list of words here
uniq -c - it provides the count of unique words
head - it provides the top few lines from the list or file