複数の行と列で構成されるファイルがあります。列は\ tで区切られます。今度は、2番目の列に基づいてファイルをソートしたいと思います。たとえば、次のようにsort -f -t$'\t' -k2 file.txt
できます。しかし、2番目の列には+
、o
と-
。+
上、o
中、下を-
揃える方法は?
また、列5という別の列があり、その列のファイルをソートしようとしています。ただし、n
上、s
中、下の順に個人順を指定したいと思いますl
。
私の目標を効果的に達成できるプログラムがある場合は、このソリューションをお勧めします。それ以外の場合は、自己作成機能を探しています。
ベストアンサー1
DSU、デコレーション-アライメント-脾臓式、またはシュワルツ変換という技術があります。
基本的なアプローチは、データの組み合わせになることができる独自の代理キーを作成することです(レコードのすべての部分から抽出され、他のフィールドによって異なります)。これらは、必要な重要度順にランク付けするだけです。たとえば、数値フィールドをゼロで埋めることが役に立つことがよくあります。入力行番号を最終子として追加して、最終注文を確実に作成できます。全キー長はすべてのレコードで同じでなければなりません。
その後、-k1.1の順序(レコード全体)に従ってソートされます。通常、ソートは各比較に対して 2 つのマルチキーを書き換えるため、通常はマルチキーソートよりも高速です。
最後に、固定長装飾を切り、装飾アライメントの出力をキャンセルします。