2013-04-09 44 views
0

說我有類似下面一個txt文件(這顯然不是「文字文字文字」,我只是表明這是不相關的文本塊)輸出txt文件的特定部分到csv?

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% 

不幸的是,這使事情變得非常複雜。輸出不一定要與上面完全一樣,但儘可能接近

+0

那麼,你如何判斷一條有意義的線 - 是因爲它是從一年開始的?或者因爲它最後有一個冒號?歐元符號中的所有行都有意義嗎?他們總是在他們面前只有一個空間嗎?在你寫任何東西之前,你至少需要有規則,以便你和代碼確切地知道你感興趣的內容 – 2013-04-09 15:31:12

+0

編輯過的例子基本上是我想分析的文件的鏡像,所以我知道我需要關注在「銷售」和「聯繫方式」之間的所有文字上。然後,我需要創建「2011年銷售額」的列(並在其下面的行中包含3,000個),爲「2010年銷售額」創建一列(包括下面的2000行)等。 – 2013-04-09 16:02:31

回答

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 
+0

快速回答,謝謝choroba!這適用於我在這裏給出的例子,但我的實際txt文件更加複雜。任何想法如何我可以改變這個爲我的實際txt文件工作? – 2013-04-09 15:12:43

+0

@choroba +1,乾淨和慣用。 '-E'能否在那裏啓用'說'? – 2013-04-09 15:17:30

+0

@robocode除非您對文件的格式更精確,否則請不要更新您的問題,只需要一個更能代表您實際輸入的示例。 – 2013-04-09 15:18:48