Imprimindo o valor da coluna na próxima linha

1

Minha entrada está no formato TSV:

C1
   r1
   r2
   r3
C2
   r1
   r3

A saída desejada é:

C1 r1
   r2
   r3
C2 r1
   r3

Então, basicamente o que eu quero é imprimir o valor da coluna 1 na próxima linha, é possível usar o comando Linux?

    
por Miss 11.05.2015 / 09:09

3 respostas

4

Com o GNU sed:

$ sed -i.bak '/^[^[:blank:]]/{N;s/\n[[:blank:]]\+//;}' file
C1r1
  r2
  r3
C2r1
  r3
    
por 11.05.2015 / 10:38
1

A possível solução é com awk :

awk '$1 ~ /C/ { p = 1; save = $1; } $1 !~ /C/ { if (p) { x = save $1; print x; p = 0; } else { print $0; } }' input

Resultado:

C1r1
  r2
  r3
C2r1
  r3
    
por 11.05.2015 / 09:46
1

com ed :

$ ed -s input <<EOT
g/^C/+ s/^[[:space:]]*//
g/^C/  j                
w output
EOT
    
por 11.05.2015 / 13:48