csvファイルで^ Mを処理するためにsedとawkを使用する方法は?

csvファイルで^ Mを処理するためにsedとawkを使用する方法は?

〜区切り記号付きのファイルがありますが、データベースにロードできません。

入力ファイル:

24~1~2~2~unsubscribed~wap~7~2015-10-23 20:03:00~2015-10-24 20:04:00~2015-10-25 02:53:26~Testing duplicate msisdn campaing row rount 29 ^M\
total - 58~58

予想出力:

24~1~2~2~unsubscribed~wap~7~2015-10-23 20:03:00~2015-10-24 20:04:00~2015-10-25 02:53:26~Testing duplicate msisdn campaing row rount 29 total - 58~58

^M\入力ファイルに()があることを確認したら。この値を空白に置き換えたいです。 sed(sed 's/^M\//g' ファイル名) を使ってみました。期待した結果が得られませんでした。検索しても「パターンが見つかりません」という^Mメッセージviが表示されます。

ベストアンサー1

まず、^Mこれ入力する( \r)、改行文字( \n)ではありません。もう一つの点は、\csvパーサーがそれをレコードの終わりに見ないように改行文字をエスケープすることです。

実際に持っているファイルは、* nix\r\nとは異なり、行末が定義されたWindowsで生成されたファイルです。\n実際のファイルの抜粋を提供しない限り確実に言うことはできませんが、次に^M\a vim\改行文字が表示されれば\r\\nファイルに該当内容がある可能性が高いです。したがって、次のことを試してください。

perl -i -pe 's/\r\\\n/ /'g file

おすすめ記事