como concatenar a próxima linha quando a condição é verdadeira awk

1

Estou usando awk para editar um arquivo de texto com esta aparência:

Device_ID Local Intrfce
CS_Quimicas_Alim Gig 3/13
computacion_seg_23
Gig 3/14 158 T S
MAUSALUD_B Gig 1/40
MULTIAULAS_PRINCIPAL
Gig 3/22 173 S I
S24-Computacion.cs.buap.mx
Gig 3/20 179 S I
N7K-LAN(JAF1651ANDL)
Gig 1/40 179 R S
N7K-LAN(JAF1651ANDL)
Gig 1/46 179 R S
Electronica_76 Gig 3/24
AGROECOLOGIA Gig 3/10
N7K-NK7-SERVERS(JAF1651ANDL)
Gig 1/35 159 R S
SIU_108 Gig 1/17
Bib-Salud Gig 1/40

Ele deveria ser um gráfico, mas quando o tamanho do Device_ID é grande, o resto dos campos vai para a próxima linha, eu gostaria de editar o arquivo para que fique assim:

Device_ID Local Intrfce
CS_Quimicas_Alim Gig 3/13
computacion_seg_23 Gig 3/14 158 T S
MAUSALUD_B Gig 1/40
MULTIAULAS_PRINCIPAL Gig 3/22 173 S I
S24-Computacion.cs.buap.mx Gig 3/20 179 S I
N7K-LAN(JAF1651ANDL) Gig 1/40 179 R S
N7K-LAN(JAF1651ANDL) Gig 1/46 179 R S
Electronica_76 Gig 3/24
AGROECOLOGIA Gig 3/10
N7K-NK7-SERVERS(JAF1651ANDL) Gig 1/35 159 R S
SIU_108 Gig 1/17
Bib-Salud Gig 1/40

Estou usando um if condicional para verificar o primeiro tamanho do campo, por isso, se ele tiver mais de 15 caracteres, ele será impresso no terminal.

BEGIN {FS=" "; Dispositivos_largos=0}
    {if (length($1) > 16 )
    {print $1}
    }
END {print "Dispositivos con mas de 16 caracteres en el nombre: "Dispositivos_largos}

Mas não consegui mesclar a próxima linha no final da linha.

Alguma ajuda?

Obrigado antecipadamente.

    
por Cesar Alejandro Villegas Yepez 25.01.2017 / 18:54

2 respostas

2

Usando o tamanho da primeira palavra:

awk '{printf "%s%s", $0, (length($1) > 16) ? OFS : ORS}' file

ou

awk '{
    line = $0
    if (length($1) > 16) {
        getline
        line = line OFS $0
    } 
    print line
}' file
    
por 25.01.2017 / 19:01
1

Use printf() dentro da instrução if para condicionalmente imprimir a linha com ou sem \n character (line-break)

$ awk '{if(length($1)>15 && $0 !~/Gig/){printf "%s ",$0}else{print $0}}' input.txt                                       
Device_ID Local Intrfce
CS_Quimicas_Alim Gig 3/13
computacion_seg_23 Gig 3/14 158 T S
MAUSALUD_B Gig 1/40
MULTIAULAS_PRINCIPAL Gig 3/22 173 S I
S24-Computacion.cs.buap.mx Gig 3/20 179 S I
N7K-LAN(JAF1651ANDL) Gig 1/40 179 R S
N7K-LAN(JAF1651ANDL) Gig 1/46 179 R S
Electronica_76 Gig 3/24
AGROECOLOGIA Gig 3/10
N7K-NK7-SERVERS(JAF1651ANDL) Gig 1/35 159 R S
SIU_108 Gig 1/17
Bib-Salud Gig 1/40
    
por 25.01.2017 / 19:04