Con solo awkcomando:
awk -F, '{getline f1 <"file2" ;print f1,$3,$4}' OFS=, file1
Prendi una riga da file1 e salvala nella variabile locale f1, quindi stampa la riga che ha archiviato f1e infine stampa il terzo ( $3) e avanti ( $3) campi da file1 che delimitato da una virgola del ,tutto, e cambia OFS (output field separator [space by default]) in virgola ( ,).
Il comando breve sarebbe così:
paste -d, file2 <(cut -d, -f3- file1)
A, B, C, D
A, B, C, D
A, B, C, D
A, B, C, D
incolla il file2, quindi taglia e incolla la terza colonna nella successiva ( -f3-) da file1.
Con awke paste(opzione A)
Il comando seguente copia anche le ultime due colonne ( C,D) da file1 alla fine di ogni riga in file2:
paste -d',' file2 <(awk -F',' '{print $(NF-1)","$NF}' file1)
Sopra il comando incolla il contenuto di file2 quindi stampa un delimitatore virgola ( -d',') quindi incolla gli ultimi due campi ( NFè l'indice dell'ultimo campo ed $NFè la stringa che è il suo indice NF. Così $(NF-1)è il secondo campo prima dell'ultimo campo) da file1 quando quell'indice ridefinisce o si divide con virgola spettatore ( -F',').
Con awke paste(opzione B)
Anche questo comando è uguale al precedente ( $3e $4punta al terzo e quarto campo di ogni riga del file1):
paste -d',' file2 <(awk -F',' '{print $3","$4}' file1)
O un'altra soluzione con cutcomando:
paste -d, <(cut -d, -f1 file1) <(cut -d, -f2 file2) <(cut -d, -f3- file1)
comando taglia sopra comando prima taglia il primo campo ( -f1che è indicizzato con delimitatore virgola ( -d.)) da file1 ( cut -d, -f1 file1), quindi taglia e incolla il secondo campo di file2 ( cut -d, -f2 file2) e infine taglia e incolla la terza colonna ( -f3) in nexts ( -) da file1 ( cut -d, -f3- file1) di nuovo.
Questo comando restituisce anche lo stesso risultato:
paste -d, <(awk -F',' '{print $1}' file1) <(awk -F',' '{print $2}' file2) <(awk -F',' '{print $3","$4}' file1)
incolla il secondo campo da file1 ( awk -F',' '{print $1}' file1) quindi stampa una virgola ( -d,), quindi incolla la seconda colonna da file2 ( awk -F',' '{print $2}' file2), infine incolla awk -F',' '{print $3","$4}' file1nuovamente la seconda e ultima colonna di file1 ( ).