2016-05-03 9 views
0

bcpファイルをcsvファイルに変換できる既知のツールやスクリプトを探しています。bcpファイルを標準のcsvファイルに変換する

入力BCPファイル形式: 'YYYYYYY' で区切られた 'XXXXXXX'

  • 行で区切ら

    1. フィールド
    2. フィールドがコンマなどCRLF、CR、LF、 "、タブ、などの特殊文字が含まれています私が欲しい...

    出力フォーマット:

    1. カンマ区切りの標準csv形式ファイル
    2. フィールド値には、特殊文字を含むオリジナルのコンテンツが含まれている必要があります(特殊文字の追加や削除は行われません。CRも削除しないことを意味します)
    3. 関心のある列を選択するための列インデックス/名前。

      1. はこれでいくつかのsedコマンドでCSVファイルへのBCPファイルを、変換された私は適切なアライメントとMS Excelプログラムでファイルを開くことができる、と私は見ることができます:私は次のようでした。このため

      コンテンツは変更されませんでした(期待どおり)。

      sed -i 's/\"/\"\"/g' $inFile

      sed -i 's/XXXXXXX/","/g' $inFile

      sed -i 's/YYYYYYY/"\n"/g' $inFile

      sed -i '1s/^/\"/' $inFile

      sed -i '$s/\"//' $inFile

      sed -i -e '${/^$/d}' $inFile

      sed -i '1s/^/"Header","added","here"\n/' $inFile

    4. 試みcsvkitツール:csvcut $infile このツールは、好適なカラムを選択するが、CRを削除するようなコンテンツを変更しています。

    このようなコンバージョンのアイデアはありますか?

  • +0

    異なるデリミタを使用してCSVとして開きます。 –

    +0

    あなたの入力データの例は、助けになります、pleasd – Borodin

    答えて

    -1

    awkレスキュー!

    awk -F='XXXXXXX' -v RS='YYYYYYY' -v OFS='","' -v ORS='\n' 
            '{gsub(/"/,"\""); $1=$1; print "\""$0"\""}' file 
    

    エスケープ引用符、引用フィールド、フィールド区切り文字をコンマに変更し、区切り文字を改行に区切ります。 $1=$1は、awkに新しいデリミタを適用させます。

    関連する問題