我的输入是 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