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 |