Head and Tail

The head and tail commands also do one thing and do it well. They work on text files, or in a pipeline, on a line-by-line basis, extracting lines from the start or end of the file or pipeline. By combining these two tools, individual lines or sets of lines can also be extracted from the middle of the file.

Prizes

This first script uses shuf with head and tail to first randomly sort the list of names and then extract the first three names from the resulting temporary file. Doing this randomization once and then repeatedly going back to the saved result, picking out different parts each time, ensures that the results are consistent, and there is no chance of the same person being mentioned twice. The first three people chosen get the Gold, Silver, and Bronze prizes. Positions 4, 5, and 6 each get a runners-up prize, and the person who came last as a result of the shuffling gets the booby prize.

download.eps
cat prizes.sh #!/bin/bash PEOPLE=people.txt temp='mktemp' shuf $PEOPLE > $temp prizes=( Gold Silver Bronze ) position=0 head -3 $temp | while read name do   echo "The ${prizes[$position]} prize goes to $name"   position='expr $position + 1' done echo echo "There are three runners-up prizes. In alphabetical order, the winners are:" head -6 $temp | tail -3 | sort echo echo "The booby prize goes to 'tail -1 $temp'. Bad luck 'tail -1 $temp'!" echo echo "Congratulations to everybody ...

Get Shell Scripting: Expert Recipes for Linux, Bash, and More now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.