私はLinuxを使用しています。
次の形式のファイルがあります
; Header info
;--+-----+--+----+-+----------------
;Co TASK# ID PROP X Remarks
;de (full desc.)
;--+-----+--+----+-+----------------
AAA P00_1 000Lean - not yet done
AAB P00_2 11 Fat X 20190606
AAC P00_3 1 MidleX canceled
この形式のcsvファイルに変換したいと思います。
Code;Task#;ID;PROP;X;Remarks
AAA;P00_1;000;Lean;-;not yet done
AAB;P00_2;11;Fat;X;20190606
AAC;P00_3;1;Midle;X;canceled
フィールドの長さはさまざまですが、対応する「+」列まで可能です。たとえば、「AAC」で始まる行と「中間」フィールドを参照してください。
最初のステップは、ヘッダー形式の説明で「+」記号を含む列を識別し、「中間」などの「大きい」フィールドを考慮して、各行のこれらの列に「;」を挿入することです(上記を参照)。
Linuxでこの目的を達成するためにawk、sed、または...を使用する方法は?
乾杯!
ベストアンサー1
固定スキーマがある場合(名前を指定しましたinput-schema.csv
)
column,start,length
Code,0,4
Task,4,6
ID,10,3
PROP,13,5
X,18,2
Remarks,20,17
あなたはそれを使用することができますcsvkitそして実行します(名前で指定した入力ファイルを使用input.csv
)。
<input.csv grep -v '^;' | in2csv -f fixed -s input-schema.csv | csvformat -D ";"
持つ
Code;Task;ID;PROP;X;Remarks
AAA;P00_1;000;Lean;-;not yet done
AAB;P00_2;11;Fat;X;20190606
AAC;P00_3;1;Midle;X;canceled