Can tr replace one character with two characters?
I am trying to replace "~" with "~\n" but the output does not produce the newline.
$ echo "asdlksad ~ adlkajsd ~ 12345" | tr "~" "~\n"
asdlksad ~ adlkajsd ~ 12345
No, tr
is specifically intended to replace single characters by single characters (or, depending on command-line options, to delete characters or replace runs of a single character by one occurrence.).
sed
is probably the best tool for this particular job:
$ echo "asdlksad ~ adlkajsd ~ 12345" | sed 's/~/~\n/g'
asdlksad ~
adlkajsd ~
12345
(Note that this requires sed
to interpret the backlash-n \n
sequence as a newline character. GNU sed does this, but POSIX doesn't specify it except within a regular expression, and there are definitely older versions of sed
that don't.)