我正在尝试将一些结构化数据重新格式化为分隔的表格格式,如下所示。每条记录的行数是可变的,但列数不是(实际上是五而不是三)。
title1
data data data
data data data
data data data
title22
data data data
data data data
title333
data data data
结果应该是这样的(记录分隔符的一个额外列):
title1 data data data
title1 data data data
title1 data data data
title22 data data data
title22 data data data
title333 data data data
使用awk
记录分隔符可以很容易地用"title[0-9]+"
正则表达式,但我无法将其添加到与每个分隔的记录对应的行中。
awk '{RS="title[0-9]+"}{print RT $0}' file
不必是awk
,如果sed
或其他东西效果更好的话。
请您尝试以下操作。
awk '/^title/{val=$0;next} {print val,$0}' Input_file
这可能对你有用(GNU sed):
sed -E '/^title/h;//d;G;s/(.*)n(.*)/2 1/' file
将标题行保存在保留空间中,否则将标题行附加到记录行并重新排列,使标题位于第一位。
通用答案的另一个awk。。
awk ' { if(NF>1) {print title,$0 } else { title=$0} } '
带输入:
$ cat drcatfish.txt
title1
data data data
data data data
data data data
title22
data data data
data data data
title333
data data data
$ awk ' { if(NF>1) {print title,$0 } else { title=$0} } ' drcatfish.txt
title1 data data data
title1 data data data
title1 data data data
title22 data data data
title22 data data data
title333 data data data
$