将一列(长)转换为长度不等的多列(短)

Fro*_*her 5 linux sed awk text-formatting

我有一个包含一列数据的文件(即每行一个数据值)。\xc2\xa0\n我将这些数据解释为多个数据\n数据集由一行或多行分隔NA。\xc2\xa0\n请注意,数据集的长度不同。\xc2\xa0\n我想将其转换为多列格式\n其中每个数据集位于列中\n(与它们在输入文件中出现的顺序相同)。

\n\n

例如,\n我有以下文件(实际上,该文件包含更多数据):

\n\n
NA\n4\n3\n5\n7\n8\n3\nNA\nNA\nNA\n3\n4\n5\n2\nNA\n2 \n7\n4\n6\n9\nNA\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的预期输出如下:

\n\n
4 3 2\n3 4 7\n5 5 4\n7 2 6\n8 . 9\n3\n
Run Code Online (Sandbox Code Playgroud)\n\n

8 和 9 之间的点并不是真正需要的,但也可以用空格代替。

\n

n.c*_*lou 1

该输出格式对我来说没有意义。我认为这根本不实用。

无论如何,只需每行写入它,然后转置(或者更好,将其保留在每行):

tr '\n' ' ' < example | tr 'N' '\n' | sed 's/^A //; /^$/d'
Run Code Online (Sandbox Code Playgroud)

给出

4 3 5 7 8 3 
3 4 5 2 
2 7 4 6 9
Run Code Online (Sandbox Code Playgroud)