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

各「field1」が新しい行から始まるように、均一に見せたい

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

問題は、これらの各列に固有のデータ セットがあるため、新しい行に分割する見慣れた場所が見つからないことです。どんな助けでも大歓迎です!

PS: sed または tr でこれを行うと大歓迎です PS: 6 または 9 またはその他の 3 の倍数だけでなく、最大 150 列まで存在できます

4

2 に答える 2

2

これはあなたのために働くかもしれません:

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

説明:

  • 3 番目の空白文字 (スペースまたはタブ) は改行に置き換えられますs/\s/\n/3

  • 最初の改行までの文字列が出力されますP

  • 最初の改行までの文字列が削除されますD

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

于 2012-05-11T21:34:22.533 に答える
1

これは、あなたが与えた例で動作します...

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

于 2012-05-11T21:20:16.713 に答える