Comment supprimer une colonne ou plusieurs colonnes du file en utilisant la command shell?

Mon file,

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 

Sortie,

 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 file d'input.

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

https://stackoverflow.com/questions/15361632/delete-a-column-with-awk-or-sed https://stackoverflow.com/questions/7551219/deleting-columns-from-a-file-with-awk -or-from-command-line-on-linux etc ..

Je crois que awk est le meilleur pour ça.

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

Il est possible d'utiliser la cut aussi.

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

N'imprimez pas les 6 e et 8 e colonnes

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

Utilisez printf pour conserver le format de chaque champ. Chaque champ est long de x caractères et le signe less justifie la string laissée.

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