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
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
tr
can only do 1 to 1 translation.Here is one way of doing that using pure Bash:
no can do, sorry.
tr
is meant to transliterate one character with another.there are numerous options, but I would use
awk
, i.e.output
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:(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 ofsed
that don't.)you could go with awk, let FS/OFS variable do the job for you:
test with your example:
--This will work perfect, since sed having a problem replacing \n