Sto usando il comando di sotto per unire due file usando le prime due colonne.AWK per utilizzare più spazi come delimitatore
awk 'NR==FNR{a[$1,$2]=substr($0,3);next} ($1,$2) in a{print $0, a[$1,$2] > "br0102_3.txt"}' br01.txt br02.txt
Ora, per impostazione predefinita, il comando AWk utilizza gli spazi bianchi come separatori. Ma il mio file può contenere uno spazio singolo tra due parole, ad es.
File 1:
ABCD TEXT1 TEXT2 123123112312312312312312312312312312
BCDEFG TEXT3TEXT4 133123123123123123123123123125423423
QWERT TEXT5TEXT6 123123123123125456678786789698758567
File 2:
ABCD TEXT1 TEXT2 12312312312312312312312312312
BCDEFG TEXT3TEXT4 31242342342342342342342342343
MNHT TEXT8 TEXT9 31242342342342342342342342343
voglio il file dei risultati come;
ABCD TEXT1 TEXT2 123123112312312312312312312312312312 12312312312312312312312312312
BCDEFG TEXT3TEXT4 133123123123123123123123123125423423 31242342342342342342342342343
QWERT TEXT5TEXT6 123123123123125456678786789698758567
MNHT TEXT8 TEXT9 31242342342342342342342342343
Eventuali suggerimenti?
grande! funziona, ora sto usando il comando 'awk -F '[[: space:]] [[: space:]] +' 'NR == FNR {a [$ 1, $ 2] = $ 3; successivo} ($ 1, $ 2) in {print $ 0, a [$ 1, $ 2]> "br0102_4.txt"} 'br01.txt br02.txt'. Ma tra la concatenazione dei record dei due file per qualsiasi riga, vedo un carattere LF Feed di linea, qualche suggerimento su come evitarlo? Quindi le righe unite sono divise in due righe. – Apurv
'print $ 0, a [$ 1, $ 2]' deve essere in uscita la riga dal secondo file seguito da 'OFS' (spazio per impostazione predefinita) e quindi il valore di' a [$ 1, $ 2] seguito da 'ORS' (newline di default). Il tuo primo file di input è forse un file newline DOS? –
Questo mi ha aiutato ad analizzare l'output di un comando di sistema che utilizza sempre almeno 2 spazi per delineare le colonne, quindi grazie mille! – dragon788