2017-08-10 13 views
0

プロジェクトのために、XML形式を使用してrest(curl)を介してcsv-fileからwebsystemにデータを取得する必要があります。 私は仕事のためにほとんどすべてを手に入れました。CSVの要素を新しい行で配列に保存

このプロジェクトで受け取ったファイルは、.xlsxファイルです。私はそれを.csvファイル(デリミタ区切り)にエクスポートし、エンコーディングをUTF-8に変換しました。元のファイルには、約2000行と30列があります。

私の戦略は、.csvファイルのフィールドを「カット」し、出力をbash(4.3.42)スクリプト(これまではPythonを使用していない;)で配列に保存することです)それはテストマシンです)。

csvの形式は次のとおりです(簡略化) (注:1つのセルに3つの行があり、それはスクリプトを分割する部分です)curlコマンドは、ライン。データの第四について

Simplified CSV

そのような記述があります。 CSVファイルへのエクスポート後

が、これは私はvimのでそれを開いた場合、ファイルは次のようになります。

title|description|firstname 
Test|Lorem ipsum dolor sit amet, 
consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat 
sed diam voluptua.|Chris 

これは私の簡素化スクリプトです:

file="Kontakte.csv" 

# Get the values from the file 
arrV[1]=$(cut -d'|' -f1 "$file" | cut -d$'\n' -f2) # Title 
arrV[2]=$(cut -d'|' -f2 "$file" | cut -d$'\n' -f2) # Description 
arrV[3]=$(cut -d'|' -f3 "$file" | cut -d$'\n' -f2) # First name 

echo "### Values ###" 
# For reference 
echo "Title: " ${arrV[1]} 
echo "Description: " ${arrV[2]} 
echo "Name: " ${arrV[3]} 

私は何を得ます..

:。代わりに、そのようなことの

### Values ### 
Title: Test 
Description: Lorem ipsum dolor sit amet, 
Name: Chris 

...

### Values ### 
Title: Test 
Description: Lorem ipsum dolor sit amet,\n onsetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat\n sed diam voluptua. 
Name: Chris 

私は新しい行を取り除くためにvbaスクリプトを持っていますが、あまり理想的ではない解決策です。

次のように、ちょうどそれを動作させるために死刑執行の周りにいくつかの引用符を配置するとよいでしょう:

arrV[2]="$(cut -d'|' -f2 "$file" | cut -d$'\n' -f2)" 

しかし、私はそのような問題を解決するcoudn't。

あなたは新しいラインについて何をすべきか考えていますか?または、Excelで新しく作成された行をあらかじめ削除するだけですか?

ありがとうございます。

答えて

0

あなたはライン指向のツールを使用していますので、組み込みの\nが問題を引き起こすのは驚くことではありません。 〜のような文字を選択し、grepを使用して.csvに表示されないことを確認します。 \r(Mac)ラインターミネータで.csvにエクスポートします。次に、あなたの予約文字に改行をマップするためにTR & mac2unixを使用し、行末を修復するために:あなたは、ファイルをいじるが終了したら、問題が復元されますtr '~' '\n'

tr '\n' '~' < Kontakte.csv | mac2unix > New.csv 

もちろん、CSVライブラリなどの適切なツールを使用する方がはるかに良いでしょう。

関連する問題