Here is an example of how to do similar in node-red
[{"id":"5cd955ecde8bbb91","type":"inject","z":"65617ffeb779f51c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":160,"y":4320,"wires":[["967fbe6db440f583"]]},{"id":"967fbe6db440f583","type":"template","z":"65617ffeb779f51c","name":"simulate read file_a","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"Date;Duration;Energy;Price;Costs;StartReading;UID;Username\n2023-3-10 6:42:14;0:6:1;0,02;29,9;0,00598;1167,326;vehicle;vehicle\n","output":"str","x":330,"y":4320,"wires":[["403ec7b80e39a85c"]]},{"id":"403ec7b80e39a85c","type":"change","z":"65617ffeb779f51c","name":"","rules":[{"t":"set","p":"original_file_a","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":540,"y":4320,"wires":[["6a38f80097a06eba"]]},{"id":"6a38f80097a06eba","type":"csv","z":"65617ffeb779f51c","name":"","sep":";","hdrin":true,"hdrout":"none","multi":"mult","ret":"\\n","temp":"","skip":"0","strings":true,"include_empty_strings":"","include_null_values":"","x":710,"y":4320,"wires":[["9c360c9412158332"]]},{"id":"9c360c9412158332","type":"change","z":"65617ffeb779f51c","name":"","rules":[{"t":"move","p":"payload","pt":"msg","to":"file_a","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":870,"y":4320,"wires":[["3c5db59cc227b006"]]},{"id":"3c5db59cc227b006","type":"template","z":"65617ffeb779f51c","name":"simulate read file b","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"Date;Duration;Energy;Price;Costs;StartReading;UID;Username\n2023-3-10 6:42:14;0:6:1;0,02;29,9;0,00598;1167,326;vehicle;vehicle\n2023-3-11 6:42:15;0:6:1;0,02;29,9;0,00598;1167,326;vehicle;vehicle\n","output":"str","x":230,"y":4380,"wires":[["e411da20cbae16be"]]},{"id":"e411da20cbae16be","type":"csv","z":"65617ffeb779f51c","name":"","sep":";","hdrin":true,"hdrout":"none","multi":"mult","ret":"\\n","temp":"","skip":"0","strings":true,"include_empty_strings":"","include_null_values":"","x":390,"y":4380,"wires":[["c6d133fbef5674ac"]]},{"id":"c6d133fbef5674ac","type":"change","z":"65617ffeb779f51c","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"(\t $dates_in_file_a := $$.file_a.Date;\t$append($$.file_a,$$.payload[$not($.Date in $dates_in_file_a)][])\t)","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":560,"y":4380,"wires":[["117ae6632c1bf80e"]]},{"id":"117ae6632c1bf80e","type":"csv","z":"65617ffeb779f51c","name":"","sep":";","hdrin":true,"hdrout":"all","multi":"mult","ret":"\\n","temp":"","skip":"0","strings":true,"include_empty_strings":"","include_null_values":"","x":710,"y":4380,"wires":[["f3d15ea8be9da0d8"]]},{"id":"f3d15ea8be9da0d8","type":"debug","z":"65617ffeb779f51c","name":"file_a contains og file object\\n payload contains new updated file_a\\n original_file_a contains og csv","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":290,"y":4440,"wires":[]}]
I have simulated the reading of the files, these should be read file nodes. The output can be saved using a file write node.
Your example does not explain the differences between the files, best to show a example of both files (obviously not 100 entries maybe five in each). Then explain what the different lines that would be moved are and how they are identified.