Awk: expandindo o primeiro campo ao longo da coluna

2

Eu tenho uma tarefa que requer alguns scripts de awk:

Digamos que eu tenha um arquivo:

A,under1
,under2
,under3
,under4
,under5
B,new1
,new2
,new3
C,sm1
,sm2

Como eu poderia fazer isso parecer com o awk?

A,under1
A,under2
A,under3
A,under4
A,under5
B,new1
B,new2
B,new3
C,sm1
C,sm2

Em outras palavras, quero expandir o primeiro campo ao longo da coluna.

    
por user30422 17.01.2013 / 03:44

2 respostas

3

Um caminho:

$ awk -F, '!$1{$1=p;}$1{p=$1;}1' OFS=, file

$1{p=$1;} Quando $ 1 tiver um valor, armazene-o em uma variável p

!$1 O valor médio de $ 1 está vazio. Quando $ 1 estiver vazio, defina $ 1 com p que contém o último valor de $ 1.

1 para imprimir todas as linhas.

    
por 17.01.2013 / 03:53
2

outra solução:

awk -F, '{$1=$1?P=$1:P;print}' OFS=,

define P para $ 1 se $ 1 não estiver vazio. define $ 1 para o anterior P caso contrário

    
por 17.01.2013 / 05:21