2012-05-11 13 views
1

問題があります。今のところ、タブ区切りであるために仮定されたファイルには、いくつかの「改行」がありません...私のファイルは、今、この権利のようになります行を列に分割する

Field1 Field2 Field3 
Field1 Field2 Field3 Field1 Field2 Field3 Field1 Field2 Field3 
Field1 Field2 Field3 Field1 Field2 Field3 
Field1 Field2 Field3 
Field1 Field2 Field3 Field1 Field2 Field3 
Field1 Field2 Field3 

私はそれぞれの「フィールド1で、それが均一に見えるようにしたいです「改行問題がある

Field1 Field2 Field3 
Field1 Field2 Field3 
Field1 Field2 Field3 
Field1 Field2 Field3 
Field1 Field2 Field3 

から始まる、これらの列のそれぞれは、データのユニークなセットを持っているので、私は新しい行に分割するにはおなじみの場所を見つけることができません。どんな助けでも大歓迎です!

PS:SEDまたはTRでこれを行うには、大幅に PSをいただければ幸いです:これは、あなたが与えた例で動作します6または9または3

+3

分割する場所が見つからない場合は、非インテリジェント分割ユーティリティではどのように考えることができますか? – geekosaur

+0

まあ、3番目のタブごとに新しい行に分割する方法があると思っていた – Raymosrunerx

+0

しかし、5行目には、 'Field3'と' Field1'の間にセパレータはありません。 – geekosaur

答えて

2

これはあなたのために働くかもしれない:

sed 's/\s/\n/3;P;D' file 

説明:

  • 第三の空白文字(スペースまたはタブ)は、最初の改行点で最大の文字列が最初の改行点で最大列が

    D削除さP
  • を印刷さs/\s/\n/3

  • 改行で置き換えられています

    Dコマンドには、個性があります。改行がない場合、その文字列は削除され、次の行が読み込まれます。ただし、改行が存在する場合は改行を削除し、改行がなくなるまで同じ文字列でサイクルを開始します。

+0

そのコマンドがどのように動作するかを私に説明すると、最高の答えが得られます(それはbtwでした) – Raymosrunerx

+0

説明を参照 – potong

1

の他の倍数だけでなく、最大150列が存在することができ...

sed -e 's/\([^\t ]* [^\t ]* [^\t ]*\)[\t ]/\1\n/g'