FC2ブログ

    nEST's SPACE-Blog

    コンピュータ、自転車、旅行などが主なテーマの日記帳です

    CentOSのsedコマンドで改行コードCRLFを一括削除する


    最近はミニベロもといホライズしか取り上げてないけど、ちゃんとお仕事もしてますよというお話。
    今回はCentOSのsedコマンドを使って、改行コードCRLFを一括で削除してみます。

    環境


    CentOS 5.9 64bit

    現象


    ある日「外部システムから貰ったCSVファイルが自社システムへ取込めない」と後輩が騒いでいる。
    エラーを見てみると、貰ったCSVが事前に取り決めた構成(列数など)に合っていない事が原因らしい。

    そこで貰ったCSVを確認してみたら「ランダムに改行コードCRLFが混入して構成が崩れている」事が分かった。
    ■例.本来5行のファイルだが、市民Cの途中に改行コードCRLFが混入して6行になっている
    10000,市民A,シミンA,19990707,2,10000-0
    20000,市民B,シミンB,19990707,1,20000-0
    30000,市民C,シミンC,19990707,1,[改行コードCRLF]
    30000-0
    40000,市民D,シミンD,19990707,1,40000-0
    50000,市民E,シミンE,19990707,1,50000-0

    Excelのセル内改行的な操作でもしているのだろうか?
    相手方でCRLFが混入しないよう改修してくれれば楽なのだが、そう簡単ではない様子。
    当面はコチラ側で対応する必要がありそうだ。

    対処方法


    sedコマンドを使用してCSV内の改行コードLFを残しつつ、改行コードCRLFのみ一括で削除する運びとした。

    コンソールから実行する場合は下記でOK。
    # sed ':loop; N; $!b loop; ;s/\r\n//g' [読込元] > [出力先]

    ※"# cat [読込元] | tr -d '\r\n' > [出力先]"で試したらCRLF以外にLFまで消えて、全部1行になってしまったので没。

    ■実行前
    10000,市民A,シミンA,19990707,2,10000-0
    20000,市民B,シミンB,19990707,1,20000-0
    30000,市民C,シミンC,19990707,1,[改行コードCRLF]
    30000-0
    40000,市民D,シミンD,19990707,1,40000-0
    50000,市民E,シミンE,19990707,1,50000-0

    ■実行後
    10000,市民A,シミンA,19990707,2,10000-0
    20000,市民B,シミンB,19990707,1,20000-0
    30000,市民C,シミンC,19990707,1,30000-0
    40000,市民D,シミンD,19990707,1,40000-0
    50000,市民E,シミンE,19990707,1,50000-0

    定期実行したい場合はこれをシェルにでも入れて、Cronへ登録すれば大丈夫だろう。
     
     
     
    関連記事
    スポンサーサイト

    テーマ:Linux - ジャンル:コンピュータ

    1. 2016/12/07(水) 23:23:02|
    2. Linux
    3. | トラックバック:0
    4. | コメント:0
    <<ミニベロで遊ぼう ~自転車の異常・異音はショップに相談しよう~ | ホーム | ミニベロで遊ぼう ~ベルは自転車の顔だ~>>

    コメント

    コメントの投稿


    管理者にだけ表示を許可する

    トラックバック

    トラックバック URL
    http://nestblog.blog.fc2.com/tb.php/160-217f3c56
    この記事にトラックバックする(FC2ブログユーザー)

    プロフィール

    管理人NEST

    Author:管理人NEST
    nEST's SPACEへようこそ。
    書きたい事を適当に書き連ねています。
    HPもよろしく。

    最新記事

    最新コメント

    最新トラックバック

    月別アーカイブ

    カテゴリ

    未分類 (1)
    GAME (20)
    雑記 (47)
    PostgreSQL (7)
    Windows (37)
    サイト運営 (6)
    MANGA (1)
    スマートフォン (19)
    Oracle (6)
    健康 (2)
    Linux (17)
    仮想化 (3)
    車 (7)
    自転車旅行 (3)
    自転車パーツ・ウェア (2)
    自転車イベント (5)
    自転車 (15)

    ブログ用カウンター

    検索フォーム

    RSSリンクの表示

    リンク

    このブログをリンクに追加する

    Powered By FC2ブログ

    今すぐブログを作ろう!

    Powered By FC2ブログ