我试图重新格式化一些结构化数据,象下面,成分隔的表格格式。每条记录的行数是可变的,但列数却不是(实际上是五而不是三)。
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
。
答案 0 :(得分:2)
请您尝试以下。
awk '/^title/{val=$0;next} {print val,$0}' Input_file
答案 1 :(得分:0)
这可能对您有用(GNU sed):
sed -E '/^title/h;//d;G;s/(.*)\n(.*)/\2 \1/' file
将标题行保存在保留空间中,否则将标题行追加到记录行并重新排列,以使标题排在首位。
答案 2 :(得分:0)
另一个通用答案。
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
$