Como remover uma coluna ou várias colunas do arquivo usando o comando shell?

8

Meu arquivo

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                                              

Saída,

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

Desejo excluir duas colunas INFO_NAM e WERT do meu arquivo de entrada.

    
por pmaipmui 09.08.2015 / 13:55

3 respostas

16

Não imprima 6 th e 8 th coluna

awk '{$6=$8=""; print $0}' file
    
por 30.08.2016 / 18:08
11

Isso foi respondido antes em outro lugar no Stack Overflow.

link link etc ..

Eu acredito que awk é o melhor para isso.

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

É possível usar cut também.

cut -f1,2,3,4,5,7 file
    
por 09.08.2015 / 14:16
2

Use printf para preservar o formato de cada campo. Cada campo tem x caracteres e o sinal de menos justifica a seqüência de caracteres à esquerda.

awk '{ printf("%-8s %-8s %-8s %-8s %-8s %-4s\n", $1, $2, $3, $4, $5, $7)}' file
    
por 09.08.2015 / 15:02