Stream Editor - Loops
SED facilitates branching and looping so that we can control the flow of execution.A loop in SED work like a goto statement. The SED can move to the line marked by the label and continue to execute the remaining commands.
\\ A name after colon(:) implies the label name. :label :start :end :up
NOTE : If we want to jump to a specific label, we can use the b command followed by the label name.
In our lfc.txt file, there are many entries from book authors and their titles. The following examples combines a book title and the name of its author to a one line seperated by a comma. Then it searches for the "Jawaharlal" pattern. If the pattern matches, it prints a hyphen (-) in front of the line, otherwise it jumps to the print label that prints the line.
$ sed -n ' h;n;H;x s/\n/, / /Jawaharlal/!b Print s/^/- / :Print p' lfc.txt ------------------ ------------------ Walden, Henry David Thoreau - The Discovery Of India, Jawaharlal Nehru The Algebra of Infinite Justice, Arundhati Roy Bookless in Baghdad, Shashi Tharoor Adventures of Sherlock Holmes, Sir Arthur Conan Doyle
h;n;H;x and s/\n/, / :- combine the book title and its author separated by a comma(,).
/Jawaharlal/!b Print :- Print only when the pattern does not match.
:Print :- Print is just a label name.