列項目を別の列の内容に条件付きに置き換える

列項目を別の列の内容に条件付きに置き換える

csvファイルに金融価格データがあり、一般的な行は次のとおりです。

2012-06-06 18:00:00,2012-06-06 19:00:00,4,2012-06-06 14:00:00,4,1644.8005,1644.8,1631.232,1632.266,7353,TRUE

この特定の例では、列6と7の両方が同じ値を含むように、条件に応じて列7の内容を列6の内容に置き換えようとします。

これらの条件付き操作を完了する必要があるファイル行番号は、別のテキストファイル(別のプログラムOctaveの出力「line_index_file」と呼ばれる)から読み取られます。たとえば、次のようになります。

100
125

これは、上記の操作が元のデータファイルの100行と125行にのみ適用できることを意味します。

sedまたはawkを使用してこれをどのように実行できますか?

ベストアンサー1

これを試してみてください。

awk 'BEGIN{FS=OFS=","}NR==FNR{a[$0];next}FNR in a {$7=$6}1' line_index_file file.csv

おすすめ記事