tr は 1 文字を 2 文字に置き換えることができますか?
「~」を「~\n」に置き換えようとしていますが、出力で改行が生成されません。
$ echo "asdlksad ~ adlkajsd ~ 12345" | tr "~" "~\n"
asdlksad ~ adlkajsd ~ 12345
awk を使用して、FS/OFS 変数に任せることもできます。
awk -F'~' -v OFS="~\n" '$1=$1'
あなたの例でテストしてください:
kent$ awk -F'~' -v OFS="~\n" '$1=$1' <<< "asdlksad ~ adlkajsd ~ 12345"
asdlksad ~
adlkajsd ~
12345
tr
1対1の翻訳しかできません。
純粋な Bashを使用してこれを行う 1 つの方法を次に示します。
s='"asdlksad ~ adlkajsd ~ 12345'
r=$'~\n'
echo -e "${s//\~/$r}"
asdlksad ~
adlkajsd ~
12345
echo "asdlksad ~ adlkajsd ~ 12345" | sed 's/~/~|/g' | tr '|' '\n'
-- sed の置換に問題があるため、これは完璧に機能します \n