Avec seulement la commande awk
:
awk -F, '{getline f1 <"file2" ;print f1,$3,$4}' OFS=, file1
Obtenez une ligne de file1 et stockez-la dans la variable locale f1
, puis affichez la ligne stockée dans f1
et enfin affichez le troisième($3
) et le quatrième($3
) champs de file1 qui sont délimités par des virgules ,
, et changez le OFS(séparateur de champ de sortie [espace par défaut]) en virgule(,
).
La commande courte serait la suivante :
paste -d, file2 <(cut -d, -f3- file1)
A,B,C,D
A,B,C,D
A,B,C,D
A,B,C,D
copiez le file2, puis coupez et collez la troisième colonne à la suite(-f3-
) de file1.
Avec awk
et paste
(option A)
La commande ci-dessous copie également les deux dernières colonnes (C,D
) de file1 à la fin de chaque ligne de file2 :
paste -d',' file2 <(awk -F',' '{print $(NF-1)","$NF}' file1)
La commande ci-dessus colle le contenu de file2 puis imprime un délimiteur de virgule(-d','
) puis colle les deux derniers champs(NF
est l'index du dernier champ et $NF
est la chaîne dont l'index est NF
. Donc $(NF-1)
est le deuxième champ avant le dernier champ) de file1 quand ces index se redéfinissent ou se séparent avec un observateur de virgule(-F','
).
Avec awk
et paste
(option B)
Cette commande est également la même que ci-dessus($3
et $4
pointent vers le troisième et le quatrième champ de chaque ligne de file1) :
paste -d',' file2 <(awk -F',' '{print $3","$4}' file1)
Ou une autre solution avec la commande cut
:
paste -d, <(cut -d, -f1 file1) <(cut -d, -f2 file2) <(cut -d, -f3- file1)
La commande cut dans la commande ci-dessus coupe d'abord le premier champ(-f1
indexé avec un délimiteur de virgule(-d
)) de file1(cut -d, -f1 file1
), puis coupe et colle le deuxième champ de file2(cut -d, -f2 file2
) et enfin coupe et colle la troisième colonne(-f3
) aux suivants(-
) de file1(cut -d, -f3- file1
) à nouveau.
Cette commande retourne également le même résultat :
paste -d, <(awk -F',' '{print $1}' file1) <(awk -F',' '{print $2}' file2) <(awk -F',' '{print $3","$4}' file1)
collez le deuxième champ de file1(awk -F',' '{print $1}' file1
) puis imprimez une virgule(-d,
), puis collez le deuxième champ de file2(awk -F',' '{print $2}' file2
), enfin collez le deuxième et dernier champ de file1(awk -F',' '{print $3","$4}' file1
) à nouveau.