Questione : Aggiungere i dati supplementari alla destra dei dati comuni fra le lime


Ho due lime in cui in entrambi, le posizioni del carattere 1 - 10 sono le stesse, comunque nella seconda lima desidero copiare tutto dalla posizione del carattere 101 all'estremità della linea, nella prima lima in cui i caratteri 1 - 10 sono gli stessi.

È questo possibile in un ambiente del DOS?

Per esempio
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

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

Come potete vedere mentre 1 - 10 sono gli stessi 11 - 100 differiscono. …. spetta il resto dei dati alla colonna 100.

Queste lime possono essere molto grandi, larghezza e lunghezza, per esempio il numero delle annotazioni supererà 100000 annotazioni

Risposta : Aggiungere i dati supplementari alla destra dei dati comuni fra le lime

Non è efficiente, ma questo è un metodo. Regolare i tre vars all'inizio alle vostre lime.
Lo schedario di lavoro sta presupponendo che il valore “chiave„ dei primi 10 carboni sia unico, almeno in file2. Altrimenti otterrete soltanto l'ultima linea trovata là per ogni chiave.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
@echo fuori
EnableDelayedExpansion setlocal
regolare file1=file1.txt
regolare file2=file2.txt
precisare =output.txt

copiare il nul “%out%„
per il delims=„ %%A del tokens=* del usebackq di /F “in ("%~file1%„) fa (
  regolare key=%%A
  regolare il key=! chiave: ~, 10!
  regolare line=%%A
  per delims=„ %%B del tokens=* di /F “dentro (“findstr /B /L /c: „! chiave! ““%~file2%„ ") fanno (
     regolare line=%%B
     regolare line=%%A! linea: ~100!
  )
  >> eco “di %~out%„! linea!
)
Altre soluzioni  
 
programming4us programming4us