cut

The cut command is used widely in shell scripts. It is the complement to paste, although “cut” and “paste” in this context have nothing to do with the GUI metaphor of moving data to a clipboard and then pasting it back again. Its advantage over more heavyweight alternatives such as awk is that it is much smaller and simpler and is therefore faster to execute. This might seem trivial, but it can make a noticeable difference within loops. It takes either one or two parameters. In its simplest form, cut -c n cuts out only column n, and cut -c m-n cuts out columns m to n in each line of the input, or of the file passed as an argument. It can also cut based on a delimiter, so, for example, cut -d: -f5 /etc/passwd will grab the fifth colon-delimited field from each line in /etc/passwd. The following script cuts the filename as the first field of a colon-delimited list, and then the title of the page from the first > onwards to the next <. It is far from foolproof, although the better understood the file format is, the more reliable this method is.

download.eps
cat gettitle.sh
#!/bin/bash
grep "<title>" *.html | while read html
do
   filename='echo $html | cut -d: -f1'
   title='echo $html | cut -d">" -f2- | cut -d"<" -f1'
   echo "$filename = $title"
done
$ grep "<title>" *.html Aliases.html:<title>Aliases - Bash Reference Manual</title> ANSI_002dC-Quoting.html:<title>ANSI-C Quoting - Bash ...

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.