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:最多可以有 150 列,而不仅仅是 6 或 9 或任何其他 3 的倍数

4

2 回答 2

2

这可能对您有用:

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

解释:

  • 第三个空格字符(空格或制表符)被换行符替换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 回答