40

tr は 1 文字を 2 文字に置き換えることができますか?

「~」を「~\n」に置き換えようとしていますが、出力で改行が生成されません。

$ echo "asdlksad ~ adlkajsd ~ 12345" | tr "~" "~\n"
asdlksad ~ adlkajsd ~ 12345
4

5 に答える 5

6

awk を使用して、FS/OFS 変数に任せることもできます。

awk -F'~' -v OFS="~\n" '$1=$1' 

あなたの例でテストしてください:

kent$ awk -F'~' -v OFS="~\n" '$1=$1' <<< "asdlksad ~ adlkajsd ~ 12345" 
asdlksad ~
 adlkajsd ~
 12345
于 2013-08-21T20:03:58.200 に答える
5

tr1対1の翻訳しかできません。

純粋な Bashを使用してこれを行う 1 つの方法を次に示します。

s='"asdlksad ~ adlkajsd ~ 12345'
r=$'~\n'
echo -e "${s//\~/$r}"
asdlksad ~
 adlkajsd ~
 12345
于 2013-08-21T20:04:26.350 に答える
0
echo "asdlksad ~ adlkajsd ~ 12345" | sed 's/~/~|/g' | tr '|' '\n'

-- sed の置換に問題があるため、これは完璧に機能します \n

于 2015-06-19T12:12:56.880 に答える