2017-03-19 5 views
1

次のawkコマンドを使用しようとしています。私の目標は、数値シーケンスを使用して、シーケンスの値を使用してファイル内に新しい列を作成することです。最後に、私は、新しい列のそれぞれにCSVファイルを生成します:番号シーケンスを使用してawkを使用してCSVファイルに列を追加する

for i in $(seq 0 0.5 70); do 
awk -F"," 'BEGIN {OFS = ","} {$7=$(echo $i); print}' ClassificationTest.csv > new_columns_$i.csv; 
done 

入力CSVファイルは次のようになります。

Sample1,Probe1,Temp1,ProbeType1,SampleType1,Ratio1 
Sample2,Probe2,Temp2,ProbeType2,SampleType2,Ratio2 

期待される結果は次のようになります。

という名前のファイルnew_columns_20.0.csv

Sample1,Probe1,Temp1,ProbeType1,SampleType1,Ratio1,20.0 
Sample2,Probe2,Temp2,ProbeType2,SampleType2,Ratio2,20.0 

私の目標は、tの値ごとにファイルを持つことです彼は数列。私は引数としてシーケンスの値を渡すのに苦労しています。誰かがこれを実行する方法のヘルプを提供してもらえますか?ありがとうございました。

+1

してください、いくつかのサンプルデータと結果を期待以内に行うための一つの方法です。 –

+0

こんにちは@James Brown。編集内容をご覧ください。ありがとう。 – ropolo

答えて

3

これは

for i in {0..140}; 
do awk -F, -v OFS=, -v i=$i '{$7=i/2}1' input > output_$i; 
done 

または完全awk

awk -F, -v OFS=, '{for(i=0;i<=70;i+=0.5) 
         {$7=i; print > "output_"i}}' input 
+0

もう1つ目がきれいに見えますが、+1 – RomanPerekhrest

+0

私は同意します。どちらのオプションも機能しましたが、ファイル名に新しい列に追加される値が反映されるため、2番目のオプションが優先されます。 @karafkaのご協力ありがとうございました。 – ropolo

関連する問題