ii
6 Advanced sed: cycles and buffers . . . . . . . . . . . . . 37
6.1 How sed Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6.2 Hold and Pattern Buffers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6.3 Multiline techniques - using D,G,H,N,P to process multiple lines . . 37
6.4 Branching and Flow Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
6.4.1 Branching and Cycles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
6.4.2 Branching example: joining lines . . . . . . . . . . . . . . . . . . . . . . . . . . 42
7 Some Sample Scripts. . . . . . . . . . . . . . . . . . . . . . . . . . . 43
7.1 Joining lines. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
7.2 Centering Lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
7.3 Increment a Number. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
7.4 Rename Files to Lower Case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
7.5 Print bash Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
7.6 Reverse Characters of Lines. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
7.7 Text search across multiple lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
7.8 Line length adjustment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
7.9 Reverse Lines of Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
7.10 Numbering Lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
7.11 Numbering Non-blank Lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
7.12 Counting Characters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
7.13 Counting Words . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
7.14 Counting Lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
7.15 Printing the First Lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
7.16 Printing the Last Lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
7.17 Make Duplicate Lines Unique. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
7.18 Print Duplicated Lines of Input. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
7.19 Remove All Duplicated Lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
7.20 Squeezing Blank Lines. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
8 GNU sed’s Limitations and Non-limitations . . 62
9 Other Resources for Learning About sed . . . . 62
10 Reporting Bugs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Appendix A GNU Free Documentation License . . 66
Concept Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Command and Option Index . . . . . . . . . . . . . . . . . . . . . . 78