将txt文件的特定部分输出到csv?

时间:2013-04-09 14:26:14

标签: perl parsing csv sed

假设我有一个类似下面的txt文件(显然不是'文本文本',我只是显示它是无关文本的块)

text text text
text text text 
text text text 
important section age=30
name=mike
text text text 
text text text 
text text text

我想解析它并仅向csv输出'重要部分',以便我的csv看起来如下所示,即一列中的年龄和另一列中的名称

age    name
30     mike

我应该怎么做? Perl的?桑达?我对这两者都不熟悉,但希望有一个直截了当的解决方案。

Choroba实际上对我完全回答了上述问题,但我担心我过度简化了我的实际文本文件,它更像是下面

Something:
 this
Something else:
 that
Something else:
 etc.
Sales 
2011 Sales:
 €3,000

()
2010 Sales:
 €2,000

()
2011 Growth Rate:
 50.00%

Contact Details

我理想的输出是

2011 Sales    2010 Sales    2011 Growth Rate
3,000         2,000         50.00%

不幸的是,这使事情变得非常复杂。输出不必与上面完全相同,但尽可能接近

1 个答案:

答案 0 :(得分:1)

Perl解决方案。它标志着我们是否在重要部分。重要的一切都记在一个阵列中并在最后打印出来:

perl -nE '$i = 1 if s/important section //;
          push @t, [$1, $2] if $i and /(.*)=(.*)/;
          }{
          for my $i (0, 1) {
              say join "\t", map $_->[$i], @t
          }' file.txt