Vimでは^Mとして表示される、フィールドの中央(行末ではない)に不適切に配置された改行文字を含む区切りファイルをいくつか用意します。これらは、MSSQLデータベースのfreebcp(Centos 6)エクスポートに由来します。データを16進数でダンプすると、\ r\nパターンが表示されます。
$ xxd test.txt | grep 0d0a
0000190: 3932 3139 322d 3239 3836 0d0a 0d0a 7c43
awkで削除することはできますが、sedで同じことを行うことはできません。
これはawkで機能し、改行を完全に削除します。
awk 'gsub(/\r/,""){printf $0;next}{print}'
しかし、これはsedではなく、ラインフィードはそのままにしておきます。
sed -i 's/\r//g'
これが効果がないように見える場合:
sed -i 's/\r\n//g'
sed式(ctrl + v、ctrl + m)で^Mを使用することも機能しないようです。
この種のタスクでは、sedの方が簡単に理解できますが、私は両方についてもっと学ぶことに取り組んでいます。sedを不適切に使用していますか、それとも制限がありますか?