Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
36 changes: 36 additions & 0 deletions Exercise4.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
#Q1
#write a file containing unique gender and years experience in two space deliminated columns
#input = wages.csv
#output uni.gen.exp.csv
cat wages.csv | cut -d ',' -f1,2 | sed 's/\<[0-9]\>/0&/' | sed 's/,/ /g' > a.tmp.csv
head -1 a.tmp.csv > u.gender.year.csv
sed '1d' a.tmp.csv | sort -n | uniq >>u.gender.year.csv
rm a.tmp.csv
echo "unique gender and experience .csv complete"

@lyy005 lyy005 Sep 28, 2017

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

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

Alternatively, you can use:

cat wages.csv | grep -v gender | cut -d , -f 1,2 | sort -u | tr ',' ' ' | sort -k1,1d -k2,2n >categories.txt

#Q2
#Print gender, yearsExperience, and wage for highest earner
echo "Highest Earner"
cat wages.csv | sed 's/,/ /g' | cut -d ' ' -f 1,2,4 | sort -n -k 3 | tail -1

#Print gender, yearsExperience, and wage for lowest earner
echo "Lowest Earner"
cat wages.csv | sed 's/,/ /g' | cut -d ' ' -f 1,2,4 | sort -n -k 3 | head -2 | tail -1

#Number of females in top 10 earners
echo "Number of Females in Top 10 Earners"
cat wages.csv | sed 's/,/ /g' | sort -n -k 4 | tail -10 | grep "female" | wc -l

#Q3
#Minimum wages of 12 vs 16 years school
val1=$(cat wages.csv | sed 's/,/ /g' | awk -F, '$3 = "12"' | sort -n -k "4" | cut -d ' ' -f 4 | head -2 | tail -1)

@lyy005 lyy005 Sep 28, 2017

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

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

You already replaced "," to " ". So for awk, you may want to use: awk -F ' '
Also, for awk, you want to use == instead of =

Then the command would be:
cat wages.csv | sed 's/,/ /g' | awk -F ' ' '$3 == "12"' | sort -n -k "4" | cut -d ' ' -f 4 | head -1
cat wages.csv | sed 's/,/ /g' | awk -F ' ' '$3 == "16"' | sort -n -k "4" | cut -d ' ' -f 4 | head -1

-0.25 points for this question

val2=$(cat wages.csv | sed 's/,/ /g' | awk -F, '$3 = "16"' | sort -n -k "4" | cut -d ' ' -f 4 | head -2 | tail -1)
echo "Min wage 12 years school"
echo $val1
echo "Min wage 16 years school"
echo $val2
#Difference in wages based on school years
echo "$val2 - $val1" | bc



9 changes: 9 additions & 0 deletions movie.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
National Treasure
Pan's Labyrinth
Lord of the Rings
The Dark Knight
Pride and Prejudice
The Room
The Devil Wears Prada
The Lorax
Revenge of the Sith