Vraag : Voeg extra gegevens rechts van gemeenschappelijke gegevens tussen dossiers toe


Ik heb twee dossiers waar in allebei, karakterposities 1 tot 10 het zelfde zijn, nochtans in het tweede dossier dat ik heb gewenst om alles van karakterpositie 101 aan het eind van lijn, in het eerste dossier te kopiëren waar karakters 1 tot 10 zijn het zelfde.

Is dit mogelijk in een Dosmilieu?

B.v.
File1:
0019283743  34 23 34 .....
2935782983  23 53 96 ....
0125892837  95 23 53 ....

File2:
0019283743  53 22 67 .... 23532.2035 235693
2935782983  64 75 74 .... 62837.2958 683023

Output:
0019283743  34 23 34 .... 23532.2035 235693
2935782983  23 53 96 .... 62837.2958 683023
0125892837  95 23 53 ....

Aangezien u kunt zien terwijl 1 tot 10 zijn zelfde 11 tot 100 verschilt. …. is de rest gegevens tot kolom 100.

Deze dossiers kunnen zeer groot zijn, breedte en lengte, b.v. zal het aantal verslagen 100000 verslagen overschrijden

Antwoord : Voeg extra gegevens rechts van gemeenschappelijke gegevens tussen dossiers toe

Het is niet efficiënt, maar dit is een benadering. Plaats drie vars bij het begin aan uw dossiers.
Het partijdossier veronderstelt de „belangrijkste“ waarde van de eerste 10 klusjes, op zijn minst in file2 uniek is. Anders zult u slechts de laatste lijn vond daar voor elke sleutel worden.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
@echo weg
setlocal EnableDelayedExpansion
vastgestelde file1=file1.txt
vastgestelde file2=file2.txt
stel =output.txt op

kopi�ër nul „%out%“
voor /F „usebackq tokens=* delims=“ %%A binnen („%~file1%“) (
  plaats key=%%A
  plaats key=! sleutel: ~, 10!
  vastgestelde line=%%A
  voor /F „tokens=* delims=“ %%B binnen („findstr /B /L /c: “! sleutel! „„%~file2%““) (
     vastgestelde line=%%B
     vastgestelde line=%%A! lijn: ~100!
  )
  >> „%~out%“ echo! lijn!
)
Andere oplossingen  
 
programming4us programming4us