내 입력은 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