For substituting with newline use sed command to replace a match with a
not used char and tr command to replace that char with a newline '
'
#For example:
echo "123." | sed -E 's/([[:digit:]]*)./1|next line/' | tr '|' '
'
# sed is intended to be used on line-based input. Although it can do what you need.
#A better option here is to use the tr command as follows:
tr '
' ' ' < input_filename
#or remove the newline characters entirely:
tr -d '
' < input.txt > output.txt
#or if you have the GNU version (with its long options)
tr --delete '
' < input.txt > output.txt
#All alternatives, unlike sed will not need to reach the last line to begin the process
#with bash, slow
while read line; do printf "%s" "$line "; done < file
#with perl, sed-like speed
perl -p -e 's/
/ /' file
#with tr, faster than sed, can replace by one character only
tr '
' ' ' < file
#with paste, tr-like speed, can replace by one character only
paste -s -d ' ' file
#with awk, tr-like speed
awk 1 ORS=' ' file
#Other alternative like "echo $(< file)" is slow, works only on small files and needs to process the whole file to begin the process.
sed ':a;N;$!ba;s/
/ /g' file
:a create a label 'a'
N append the next line to the pattern space
$! if not the last line, ba branch (go to) label 'a'
s substitute, /
/ regex for new line, / / by a space, /g global match (as many times as it can)
$ echo 'foo
bar
baz
foo2
bar2
baz2'
| tr '
' ' 00'
| sed 's:x00x00.*:
:g'
| tr ' 00' '
'
user@cs ~/ $echo -e "I like soccer
You like football"
| sed '/soccer/c Nobody likes soccer'
Nobody likes soccer
You like football
user@cs ~/ $cat bar.txt
One
Two
user@cs ~/ $sed '/One/c 1' bar.txt
1
Two