web-dev-qa-db-fra.com

Comment supprimer une colonne ou plusieurs colonnes du fichier à l'aide de la commande Shell?

Mon fichier,

ARCHIVE  B1_NAME  B2_NAME  B3_NAME  ELEMENT  INFO_NAM WERT PROCID                                               
-------- -------- -------- -------- -------- -------- ---- ------                                              
15MinAvg AIRSS    33-GIS   DMDMGIS1 I        MvAvr15m 1123  CP                                               
15MinAvg AIRSS    33-GIS   DMDMGIS1 P        MvAvr15m 2344  CP                                               
15MinAvg AIRSS    33-GIS   DMDMGIS1 Q        MvAvr15m 4545  CP                                               
15MinAvg AIRSS    33-GIS   DMDMGIS2 I        MvAvr15m 6576  CP                                              
15MinAvg AIRSS    33-GIS   DMDMGIS2 P        MvAvr15m 4355  CP                                             
15MinAvg AIRSS    33-GIS   DMDMGIS2 Q        MvAvr15m 6664  CP                                              

Production,

ARCHIVE  B1_NAME  B2_NAME  B3_NAME  ELEMENT WERT                                                
-------- -------- -------- -------- ------- ----                                              
15MinAvg AIRSS    33-GIS   DMDMGIS1 I       1123                                                    
15MinAvg AIRSS    33-GIS   DMDMGIS1 P       2344                                                      
15MinAvg AIRSS    33-GIS   DMDMGIS1 Q       4545                                                      
15MinAvg AIRSS    33-GIS   DMDMGIS2 I       6576                                                      
15MinAvg AIRSS    33-GIS   DMDMGIS2 P       4355
15MinAvg AIRSS    33-GIS   DMDMGIS2 Q       6664

Je veux supprimer deux colonnes INFO_NAM et WERT de mon fichier d'entrée.

17
pmaipmui

Ne pas imprimer 6e et 8e colonne

awk '{$6=$8=""; print $0}' file
31
mtk

Cela a été répondu avant ailleurs sur Stack Overflow.

https://stackoverflow.com/questions/15361632/delete-a-column-with-awk-or-sedhttps://stackoverflow.com/questions/7551219/deleting- colonnes-d'un-fichier-avec-awk-ou-de-ligne-de-commande-sur-linux etc.

Je crois que awk est le meilleur pour cela.

awk '{print $1,$2,$3,$4,$5,$7}' file

Il est également possible d'utiliser cut.

cut -f1,2,3,4,5,7 file
19
AndreiR

Utilisez printf pour conserver le format de chaque champ. Chaque champ contient x caractères et le signe moins justifie la chaîne restante.

awk '{ printf("%-8s %-8s %-8s %-8s %-8s %-4s\n", $1, $2, $3, $4, $5, $7)}' file
2
fd0