2017-11-01 7 views
0

要件に基づいて連結する複数のcsvファイルがあります。各csvファイルにはヘッダーが含まれており、ソースからそのまま変更することはできません。私にはたくさんの断片があります。必要可能性:ヘッダーを削除してファイルを組み立てる方法は?

例CSV1

hostname,ip,zone 
host1,1.3.2.4,EU 
host2,1.3.2.5,EU 

例CSV2

hostname,ip,zone 
host32,8.3.2.4,US 
host22,8.3.2.5,US 

最終出力リレーは

であります
hostname,ip,zone 
host1,1.3.2.4,EU 
host2,1.3.2.5,EU 
host32,8.3.2.4,US 
host22,8.3.2.5,US 

私は上記Ansibleの脚本

- assemble: 
    src: /home/mycsvDirectory 
    dest: /home/newCSV/mycombined.csv 

を使用してやろうとしているが、完全な作品を組み立てるが、ヘッダが毎回含まれています。私は、すべてのフラグメントが予想される出力ごとに結合された後に、ただ1つのヘッダしか持たないようにしていました。どのように効率的にこれを行うには? (私はファイルをループする方法を考えることができますが、私は100のファイルを行うのは非効率です)

答えて

1

assembleモジュールは実際にファイルを意味的にマージするための正しいツールではありませんファイルの内容に依存する方法でファイルを作成します)。問題の最も簡単な解決策は、すべてのフラグメントファイルにヘッダーを置くことをやめることです。

ヘッダー行を削除することはオプションではない場合、Ansibleで最も簡単な解決策は、おそらくそれを処理するカスタムモジュールを作成することです(csvモジュールを使用してすべてのフラグメントを解析し、csv.writerなどを使用して出力を生成します) )。

いくつかのハックのある回避策があります。たとえば、ファイルをアセンブルした後にsed -i '2,$ {/^hostname/d}'を実行するには、command:ブロックを実行します。

+0

迅速な対応をお願い致します。不可能な私の既存の方法は使えます。フィルターや何かを省略することのように? (そうでなければ私はsedのあなたの考えが好きです) – diaryfolio

関連する問題