Unix sedコマンドは、エスケープされたnバックスラッシュを\n
改行文字として認識しません。たとえば、このコマンドはsed "s!,!\n!g"
入力テキストのカンマを改行文字ではなく文字nに置き換えます。
\n
sedに改行文字を解釈させるにはどうすればよいですか?
答え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/"