Just a post about some of the sed lines I find scattered, to be extend in future edits.
Merge same Lines Together
$ sed '/^ \*$/{h;d};{H;s/.*//;x;s/^\n//}'
This sed example merges all “ *” lines that follow each other (e.g. empty lines in a class level Docblock comment in a PHP file). The pattern can be replaced with any pattern to describe the lines to merge together.
It copies each matching line into the hold buffer and drops the line.
On any other non matching line, the line is appended to the hold buffer, the read buffer emptied and exchanged w/ the hold buffer (clearing the hold buffer), any starting newline removed from the pattern space (as appending to an empty hod buffer would have created it but it’s unwanted).
Limitations: Won’t work when line pattern matches the last line / GNU sed
Indent all but first line
$ | sed '1{p;d}; s/^/ /'
1
applies to first line only, p
prints and d
deletes so there is no continuation to the second expression in which s
searches for ^
start of line to replace it with two spaces. ;
separates expressions, {
and }
group them.
switch -e
has been left out.
Similar to
$ | sed '1p; 1d; s/^/ /'