다음 줄에 열 값 인쇄

다음 줄에 열 값 인쇄

내 입력은 TSV 형식입니다.

C1
   r1
   r2
   r3
C2
   r1
   r3

원하는 출력은 다음과 같습니다.

C1 r1
   r2
   r3
C2 r1
   r3

그래서 기본적으로 내가 원하는 것은 다음 줄에 열 1의 값을 인쇄하는 것입니다. Linux 명령을 사용하여 가능합니까?

답변1

GNU sed 사용:

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

답변2

가능한 해결책은 다음과 같습니다 awk:

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

결과:

C1r1
  r2
  r3
C2r1
  r3

답변3

그리고 ed:

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

관련 정보