csvファイルの最後の行にある数値に値を追加する

csvファイルの最後の行にある数値に値を追加する

csv次の形式のファイルがあります。

0.25,20171225,20:00
3,20171226,23:59
3.5,20171231,00:01
1.75,20180108,05:43

コマンドラインの最後の行の最初のフィールドに値を追加するにはどうすればよいですか?

したがって、ファイルを追加するには、1.25次のように表示されます。

0.25,20171225,20:00
3,20171226,23:59
3.5,20171231,00:01
3,20180108,05:43

ファイルが増え続けるため、最後の行には固定行番号はありません。

ベストアンサー1

awkの解決策は次のとおりです。

awk -F, -v OFS=, 'l{print l}{l=$0}END{$1+=1.25;print}' file

アイデアは、現在の行の代わりに前の行を印刷することです。

  • -F,-v OFS=,入力および出力フィールドの区切り記号を設定します。
  • l{print l}l0(数値)または空(文字列)でない場合にのみ変数を印刷します。これにより、最初の行がlまだ設定されていないため印刷されません。
  • l=$0l変数を完全な行に設定
  • END最後に変更された最初のフィールドの最後の行を印刷します。

出力:

0.25,20171225,20:00
3,20171226,23:59
3.5,20171231,00:01
3,20180108,05:43

おすすめ記事