Com o GNU sed:
$ sed -i.bak '/^[^[:blank:]]/{N;s/\n[[:blank:]]\+//;}' file
C1r1
r2
r3
C2r1
r3
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?
Com o GNU sed:
$ sed -i.bak '/^[^[:blank:]]/{N;s/\n[[:blank:]]\+//;}' file
C1r1
r2
r3
C2r1
r3
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
com ed
:
$ ed -s input <<EOT
g/^C/+ s/^[[:space:]]*//
g/^C/ j
w output
EOT
Tags text-processing awk sed