SED交換CRLFが機能しない

SED交換CRLFが機能しない

入力する:

bharti+bharti-ims+bharti-sdm+RuleForBhartiOnlyIndices+kibana_user

希望の出力:

"bharti","bharti-ims","bharti-sdm","RuleForBhartiOnlyIndices","kibana_user"

注文する:

echo "bharti+bharti-ims+bharti-sdm+RuleForBhartiOnlyIndices+kibana_user" | sed -e 's/^/"/g' -e 's/+/","/g' -e 's/$/\"/g'

これはうまく機能し、ラインターミネーターがLFの場合は望ましい出力を提供します。 Windows でファイルを編集して保存すると、行終端 LF が CRLF に置き換えられます。行末を最後のsed式に置き換えることができず、$予期"しない結果が発生します。予期しない結果:

"bharti","bharti-ims","bharti-sdm","RuleForBhartiOnlyIndices","kibana_user

"最後に欠けているものが何であるかを見てください。

どんなsedの専門家でも私を救うことができます:).

ベストアンサー1

参照は実際には存在しますが、画面に印刷するときに初期参照を置き換えました。

$ printf '%s\r\n' 'foo' | sed -e 's/^/"/g' -e 's/+/","/g' -e 's/$/\"/g' | od --format c
0000000   "   f   o   o  \r   "  \n
0000007

\r"/CR/キャリッジリターン、テキスト出力に使用される仮想カーソルの位置を行の先頭に移動し(端末のみ)、最初の引用符を上書きします。

入力を処理するための式をdos2unix追加したくない場合は、最初に入力を送信することをお勧めします。sed\r

おすすめ記事