Con solo awk
comando:
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 f1
e 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 awk
e 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 awk
e paste
(opzione B)
Anche questo comando è uguale al precedente ( $3
e $4
punta al terzo e quarto campo di ogni riga del file1):
paste -d',' file2 <(awk -F',' '{print $3","$4}' file1)
O un'altra soluzione con cut
comando:
paste -d, <(cut -d, -f1 file1) <(cut -d, -f2 file2) <(cut -d, -f3- file1)
comando taglia sopra comando prima taglia il primo campo ( -f1
che è 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}' file1
nuovamente la seconda e ultima colonna di file1 ( ).