2017-07-18 10 views
1

私はCSVでのいくつかのエンジニアリングデータは、以下の形式のファイルがあります:行2を保持、つまりawk、sed、cut、paste(Unix/Linux)を使用してCSVファイル内のフィールドをオフセットする方法は?

B1 
E2 
H3 

と:私は以下のCSV形式にこのファイルを変換する必要が

A1, B1 
C2, D2, E2 
F3, G3, H3 

上記の列3のみ。フィールドB1はカラム3にシフト/アライメントする必要があります。

つまり、C2、D2、F3、G3は破棄されます。

、シフトコピーして、全体列や行を貼り付けるためのawksedcutpasteソリューションがたくさんあります。しかし、私はカスタム操作のこの種の解決策を見つけることはありません。入力ファイルを想定し

+2

「第3列の2列目以降を保持してください。あなたはちょうど各行の最後の値がほしいと思うようですね、そうですか?もしそうなら、 "awk '(print $ NF)' filename"がそれを行います。これは、https://stackoverflow.com/questions/17921544/get-last-field-using-awk-substr – flu

+0

のdupです。文法はほとんどありません。英語の文章では、人称代名詞は(ほぼ)常に存在します。動詞の末尾には実質的に接尾辞がないので、同じ作業に人称代名詞を使用する必要があるからです。 「エンジニアリングデータがある」と言うと、「* I * have some ...」という意味ではありませんが、「*いくつかのエンジニアリングデータが必要です」という意味です。その文は、まるで不平等な形のように見えるので。あなたのすべての文に「私」があるならば、それはそれほど悪いスタイルではありません。 – peterh

+0

'フィールドB1を列3にシフト/アライメントする必要があります。 つまり、C2、D2、F3、G3は破棄されます。' '各行の最後の列を印刷する 'という非常に奇妙な方法です。それがあなたが意味するものでない場合は、あなたの質問を編集して明確にしてください。 –

答えて

2

は、すべての有益な助言をありがとうJNK

awk -F"," '{print $NF}' jnk 
+1

'-F'の設定を取り除いて(または' -F '、' 'にして)、出力に先行する空白文字が入らないようにしてください。 –

0

です。私はついに、次のようなアプローチをしました。おそらく最も効率的ではありません。 input.csv >> appendme.csv

'を{$ 2を印刷} NR> = 1 & & NR < = 4'

AWK -fを、appendme.csvするカラム2の出力を第4行\

グラブ\

AWK -fをdata1.csvに有用なカラム、input.csv >> data1.csv

が\空の行1-4の出力data2.csv

を削除 '{$ 3印刷}' 0

のawk -Fを

のsed -e '1,4d' < data1.csv> data2.csv appendme.csvへの出力DATA2の内容\

(ので、$ 1を追加保留暗黙の単一の列)、「{ print $ 1} 'data2.csv >> appendme.csv

関連する問題