+、 - などの特殊文字の並べ替え

+、 - などの特殊文字の並べ替え

複数の行と列で構成されるファイルがあります。列は\ tで区切られます。今度は、2番目の列に基づいてファイルをソートしたいと思います。たとえば、次のようにsort -f -t$'\t' -k2 file.txtできます。しかし、2番目の列には+o-+上、o中、下を-揃える方法は?

また、列5という別の列があり、その列のファイルをソートしようとしています。ただし、n上、s中、下の順に個人順を指定したいと思いますl

私の目標を効果的に達成できるプログラムがある場合は、このソリューションをお勧めします。それ以外の場合は、自己作成機能を探しています。

ベストアンサー1

DSU、デコレーション-アライメント-脾臓式、またはシュワルツ変換という技術があります。

基本的なアプローチは、データの組み合わせになることができる独自の代理キーを作成することです(レコードのすべての部分から抽出され、他のフィールドによって異なります)。これらは、必要な重要度順にランク付けするだけです。たとえば、数値フィールドをゼロで埋めることが役に立つことがよくあります。入力行番号を最終子として追加して、最終注文を確実に作成できます。全キー長はすべてのレコードで同じでなければなりません。

その後、-k1.1の順序(レコード全体)に従ってソートされます。通常、ソートは各比較に対して 2 つのマルチキーを書き換えるため、通常はマルチキーソートよりも高速です。

最後に、固定長装飾を切り、装飾アライメントの出力をキャンセルします。

おすすめ記事