past postingには、のコマンドについてBashで、行ごとにテキスト列を並べ替えるように尋ねました。所望のタスク(すなわち、行ごとに異なるサイズと内容のテキスト列を整列する)は、最初に予想されたよりもはるかに複雑であり、提案されたanswerは、過去の投稿に対して許容されるが、ほとんどの経験的データセット。したがって、私は次の擬似コードでコミュニティに問い合わせたいと思います。具体的には、私は次の擬似コードがどのように最適化できるかどうかを知りたいと思います。サイズと内容が異なるテキスト列の整列
n文字列のファイルを仮定します。一部の文字列が欠落している可能性があります。最長の列は、ファイルにリストされた最初の列ではなく、参照列でなければなりません。この参照列の行の順序を維持する必要があります。
> cat file # where n=3; first row contains column headers
CL1 CL2 CL3
foo foo bar
bar baz qux
baz qux
qux foo
bar
擬似コードの試み1(全く不十分):サイズによって
Shuffle columns so that columns ordered by size (i.e., longest column is first in matrix)
Rownames = strings of first column (i.e., of longest column)
For rownames
For (colname among columns 2:end)
if (string in current cell == rowname) {keep string in location}
if (string in current cell != rowname) {
if (string in current cell == rowname of next row) {add row to bottom of table; move each string of current column one row down}
if (string in current cell != rowname of next row) {add row to bottom of table; move each string of all other columns one row down}
}
注文コラム:
> cat file_columns_ordered_by_size
CL2 CL1 CL3
foo foo bar
baz bar qux
qux baz
foo qux
bar
で探した出力:
> my_code_here file_columns_ordered_by_size
CL2 CL1 CL3
foo foo
bar bar
baz baz
qux qux qux
foo
bar