2017-05-12 12 views
-4

以下の形式のデータがあります。フラットファイルから列データを切り取る方法

111,Ja,M,Oes,2012-08-03 16:42:00,x,xz 
112,Ln,d,D,Gn,2012-08-03 16:51:00,y,yx 

私は以下の順序でデータを含むファイルを作成する必要があります。出力形式で

111,x,xz 
112,y,yz 

、我々はコンマ最後の2つのコンマプレフィックス値の前に最初の値をしました。ここでは、カンマをいくつでも使用できます。

Linuxマシンの入力ファイルから必要な出力ファイルを生成する方法を教えてください。 awkでは、これとあまり

+1

何を試しましたか? – sat

+1

行のコンマの数が行ごとに異なることはありますか? – fancyPants

+0

SQL Serverにデータをアップロードしようとしました。 csv uploadを壊していた複数のコンマがあることを再確認しました。 –

答えて

2

Awkの文はかなり簡単です。入力および出力フィールドセパレータを設定し$NFは、最後の列の値である$1 .. $NFを使用してフィールドを印刷し、

awk 'BEGIN{FS=OFS=","}{print $1,$(NF-1),$NF}' input.csv > newfile.csv 
1

は:

awk -F"," 'BEGIN{OFS=","}{print $1,$(NF-1), $NF}' inFile > outFile 

私たちは、コンマでのawkで行を分割-F","してから最初のフィールド$1、最後のフィールド$(NF-1)に2番目、および最後のフィールド$NFを印刷します。

NFは「フィールド数」なので、1を減算すると2番目から最後の項目になります。

1

sed

$ sed -r 's/([^,]+).*(,[^,]+,[^,]+)/\1\2/' file 
111,x,xz 
112,y,yx 

又は

$ sed -r 's/([^,]+).*((,[^,]+){2})/\1\2/' file 
1
awk '{print substr($1,1,4) substr($2,10,4)}' file 

111,x,xz 
112,y,yx 
関連する問題