web-dev-qa-db-fra.com

Ajouter une nouvelle colonne au fichier

Comment puis-je ajouter une nouvelle colonne à un fichier avec des codes awk?

original.file

F1 F2 F3 ..F10 

ajouter F11 au fichier d'origine.

F1 F2 F3 ..F10 F11
15
user951487

essayer:

awk 'BEGIN{getline to_add < "f3"}{print $0,to_add}' f

Lit la colonne à ajouter à partir du fichier "f3" et l'enregistre dans la variable to_add. Après cela, il ajoute la colonne à chaque ligne de fichier f.

HTH Chris

7
Chris

awk '{print $0, "F11"}' original.file

19
nick

Si vous souhaitez ajouter une colonne à un fichier, vous pouvez procéder comme suit.

remarque: Nous supposons que le séparateur de champ FS est égal à la chaîne "fs". Vous pouvez remplacer cela par n'importe quoi, ou si vous utilisez simplement <blanks> comme séparateur de champ, vous pouvez supprimer le BEGIN{FS=OFS="fs"} participer à l'une des solutions suivantes.

ajoutez une colonne au début:

awk 'BEGIN{FS=OFS="fs"}{print value OFS $0}' file

ajoutez une colonne à la fin:

awk 'BEGIN{FS=OFS="fs"}{print $0 OFS value}' file

ajouter une colonne avant la colonne n:

awk 'BEGIN{FS=OFS="fs"}{$n = value OFS $n}1' file

ajouter colonne après colonne n:

awk 'BEGIN{FS=OFS="fs"}{$n = $n OFS value}1' file

ajoutez une colonne avant chacune des colonnes n1 <n2 <... <nm: (commencez par l'arrière)

awk 'BEGIN{FS=OFS="fs"; split("n1,n2,n3,...,nm",a,",")}
     {for(i=m;i>0;--i) $(a[i]) = value OFS $(a[i])}1' file

ou pour différentes valeurs

awk 'BEGIN{FS=OFS="fs"; split("n1,n2,n3,...,nm",a,","); split("value1,value2,...,valuem",v,",")}
     {for(i=m;i>0;--i) $(a[i]) = v[i] OFS $(a[i])}1' file

ajoutez une colonne après chacune des colonnes n1 <n2 <... <nm: (commencez par l'arrière)

awk 'BEGIN{FS=OFS="fs"; split("n1,n2,n3,...,nm",a,",")}
     {for(i=m;i>0;--i) $(a[i]) = $(a[i]) OFS value}1' file

ou pour différentes valeurs

awk 'BEGIN{FS=OFS="fs"; split("n1,n2,n3,...,nm",a,","); split("value1,value2,...,valuem",v,",")}
     {for(i=m;i>0;--i) $(a[i]) = $(a[i]) OFS v[i]}1' file
4
kvantour