How to replace a word with new line
Use this:
sed 's/|END|/\n/g' test.txt
What you attempted doesn't work because sed uses basic regular expressions, and your sed implementation has a \|
operator meaning “or” (a common extension to BRE), so what you wrote replaces (empty string or END
or empty string) by a newline.
The following worked fine for me:
$ sed 's/|END|/\
/g' foobar
T|somthing|something
T|something2|something2
Notice that I just put a backslash followed by the enter key.
You can use awk
:
$ awk -F'\\|END\\|' '{$1=$1}1' OFS='\n' file
T|somthing|something
T|something2|something2
-F'\\|END\\|'
set field separator to|END|
OFS='\n'
set ouput field separator to newline$1=$1
causeawk
reconstruct$0
withOFS
as field separator1
is a true value, causeawk
print the whole input line