sedコマンドは改行なしでテキストを置き換えます。

sedコマンドは改行なしでテキストを置き換えます。

Unix sedコマンドは、エスケープされたnバックスラッシュを\n改行文字として認識しません。たとえば、このコマンドはsed "s!,!\n!g"入力テキストのカンマを改行文字ではなく文字nに置き換えます。

\nsedに改行文字を解釈させるにはどうすればよいですか?

答え1

を使用している場合は、bash次のようにEnterキーを押して改行文字を挿入できます。

sed 's!,!\
!g'

答え2

sed "s/,/\n/g"ここではbashで動作します。

答え3

sedのMacバージョンには、このような困難があります。 sedのGNUバージョンをインストールしてみてくださいbrew install coreutils

gsed "s/,/\\n/g"

動作する必要があります。または、tr ',' \\n検索文字列が単一の文字であっても機能します。

答え4

実際、Unix Echo + Sedは常に\ nを改行文字として扱うわけではありません。私はキャリッジリターンASCII 0xdと垂直タブASCII 0xbを提供することでこの問題を解決しました。

たとえば、sed コマンドを使用して変数を使用して改行文字を追加します。

eol="\xd\xb"
echo -e "hello" | sed "s/$/$eol/"

関連情報