Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 将此基于树的数据文件解析为平面文件csv的简单方法_Unix_Text - Fatal编程技术网

Unix 将此基于树的数据文件解析为平面文件csv的简单方法

Unix 将此基于树的数据文件解析为平面文件csv的简单方法,unix,text,Unix,Text,我有一个不是标准格式的文本文件,但它以可预测的树状方式输出数据 它看起来像这样: #group 0 size: 4 bs: 7.49113e-101 0 1 2 7 #group 1 size: 3 bs: 5.31707e-101 3 4 8 #group 2 size: 2 bs: 6.2351e-101 5 6 #group 3 size: 1 bs: 1 9 group | item | score 0 0 7.49113e-101 0 1 7.49113e-101

我有一个不是标准格式的文本文件,但它以可预测的树状方式输出数据

它看起来像这样:

#group 0 size: 4 bs: 7.49113e-101
0 1 2 7 
#group 1 size: 3 bs: 5.31707e-101
3 4 8 
#group 2 size: 2 bs: 6.2351e-101
5 6 
#group 3 size: 1 bs: 1
9 
group | item | score  
0 0 7.49113e-101  
0 1 7.49113e-101  
0 2 7.49113e-101  
0 7 7.49113e-101  
1 3 5.31707e-101  
...
此文本文件中的条目是组,后面是组的大小、分数和项目标签。在第一种情况下:组0包含标签0、1、2、7(因此,其大小为4),分数为7.49113e-101

我想知道如何将这样一个文本文件解析为一个平面文件csv,看起来像这样:

#group 0 size: 4 bs: 7.49113e-101
0 1 2 7 
#group 1 size: 3 bs: 5.31707e-101
3 4 8 
#group 2 size: 2 bs: 6.2351e-101
5 6 
#group 3 size: 1 bs: 1
9 
group | item | score  
0 0 7.49113e-101  
0 1 7.49113e-101  
0 2 7.49113e-101  
0 7 7.49113e-101  
1 3 5.31707e-101  
...
我不是在寻找代码-只是需要知道我可以使用哪种语言在Unix系统上以最简单的方式完成这项工作。

awk可以完成这项工作:

awk 'BEGIN{OFS="\t"; print "group", "item", "score"}
     $1=="#group"{g=$2; s=$6; next} {for(i=1; i<NF; i++) print g, $i, s;}' data
awk'开始{OFS=“\t”;打印“组”、“项目”、“分数”}

$1=“#group”{g=$2;s=$6;next}{for(i=1;iRuby、Perl、Python将最简单,并且在所有现代Unice上都可用。大约10行以下的代码。awk值得一看