1

非常によく似た質問を見ましたが、問題を解決できませんでした sed でカンマを改行に置き換えます

文字列内の文字を変換しようとし:ています。これは私が試したものです:

echo -e 'this:is:a:test' | sed "s/\:/'\n'/g"

しかし、これは : を n に置き換えます。私もtrを試しましたが、同じ結果が得られました。パイプされた後に -e が表示されないため、新しい行が認識されないと思います。

どんな助けでも大歓迎です。

4

4 に答える 4

5
echo 'this:is:a:test' | tr : \\n

POSIX 準拠の trはすべて、\nエスケープ シーケンスをサポートします。ただし、エスケープ シーケンスを引用またはエスケープするように注意する必要があります (上の二重のバックスラッシュ)。

echoの-e引数は、echo の引数には影響しません。

于 2013-05-15T13:31:12.637 に答える
4

すでに変数に文字列があると思います。これは、パラメーター展開置換演算子を使用して、引用符で囲ま:れた文字列を使用して指定されたすべてを改行に置き換え$'...'ます。どちらの機能もbash標準の拡張機能であり、別のシェルでは機能しない場合があります。

$ foo="this:is:a:test"
$ bar="${foo//:/$'\n'}"
$ echo "$bar"
this
is
a
test
于 2013-05-15T13:29:39.443 に答える
1

おそらくPerlはオプションですか?

echo -e 'this:is:a:test' | perl -p -e 's/:/\n/g'
于 2013-05-15T13:30:08.517 に答える