我有一个文件,其中包含数据标题信息,后跟数据条目。每个标题都不同,我需要将每个标题中的信息添加到文件的每一行,直到遇到下一个标题。例如:
"Header 1","head1_info"
date1,data1
date1,data2
"Header 2","head2_info"
date3,data5
data4,data6
我希望将此文件追加到:
`"Header 1","head1_info"
head1_info,date1,data1
head1_info,date1,data2
"Header 2","head2_info"
head2_info,date3,data5
head2_info,date4,data6`
我已经尝试将grep分配给变量,但是一旦遇到" Header 2",我就不知道如何让它变为下一个变量。我也一直在试验sed和awk,但我不能让他们做我想做的事。任何指导将不胜感激。
答案 0 :(得分:0)
假设任何包含双引号的行表示标题行:
awk '/"/{a=$2;gsub("\"","",a); print; next}{print a FS $0}' FS=, input
如果还有其他方法可以确定标题,只需更改开头匹配的模式即可。 (这会在变量a
的标题行中记录第2列的值.gsub只删除双引号。)
答案 1 :(得分:0)
这可能适合你(GNU sed):
sed -r '/^"/h;//!{G;s/(.*)\n.*"(.*)"/\2,\1/}' file
遇到标题行时,将其存储在保留空间中。对于所有其他行,将保留空间附加到模式空间,并使用反向引用替换所需的信息。