Title: Fun tip #3: Split a line using ed
       Author: Solène
       Date: 04 December 2018
       Tags: fun-tip unix openbsd
       Description: 
       
       .Dd December 04, 2018
       .Dt "Splitting a line using ed"
       In this new article I will explain how to programmaticaly
       a line (with a newline) using ed.
       
       We will use commands sent to ed in its stdin to do so. The logic is to
       locate the part where to add the newline and if a character need to be
       replaced.
       
       .Bd -literal -offset indent
       this is a file
       with a too much line in it that should be split
       but not this one.
       .Ed
       
       In order to do so, we will format using printf(1) the command list
       using a small trick to insert the newline. The command list is the
       following:
       
       .Bd -literal -offset indent
       /too much line
       s/that /that\
       
       ,p
       .Ed
       
       This search the first line matching "too much line" and then replaced
       "that " by "that\n", the trick is to escape using a backslash so the
       substitution command can accept the newline, and at the end we print
       the file (replace ,n by w to write it).
       
       The resulting command line is:
       
       .Bd -literal -offset indent
       $ printf '/too much line\ns/that /that\\\n\n,n\n' | ed file.txt
       81
       > with a too much line in it that should be split
       > should be split
       > 1     this is a file
       2       with a too much line in it that
       3       should be split
       4       but not this one.
       > ?
       .Ed