ロジックに基づくテキストファイルのソート

ロジックに基づくテキストファイルのソート

1行に1000文字の文字列を含む.txtファイルがあり、ファイルに数百万行があります。クライアントの新しい要件は、次のロジックに従ってファイルをソートすることです。よろしくお願いします。私はUnixに初めてアクセスし、フォーラムで解決策を見つけることができません。

キャラクタ位置6~11が「CIP002」の場合、キャラクタ位置13~21に従って並べ替えられる。文字位置6~11が「CIP003」の場合、位置20~28の文字に応じて並べ替えられる。

並べ替える前に

00001CIP002_123456789ABCDEFJ
00002CIP002_123456790EFGHIJK
87654CIP003_ABCDEFJ123456789
87655CIP003_EFGHIJK123456790

ソート後

00001CIP002_123456789ABCDEFJ
87654CIP003_ABCDEFJ123456789
00002CIP002_123456790EFGHIJK
87655CIP003_EFGHIJK123456790

ベストアンサー1

とても簡単です。 python/awk/perl/bash/whatever を使用して CIP{2,3} ビジネスロジックをコーディングし、パイプラインを設定します。

次の出力ストリームが必要です。

$ cat two_column.txt
123456789 00001CIP002_123456789ABCDEFJ
123456790 00002CIP002_123456790EFGHIJK
123456789 87654CIP003_ABCDEFJ123456789
123456790 87655CIP003_EFGHIJK123456790

通常の方法でソートし、後処理ステップでこのプレフィックスを削除します。

$ cat two_column.txt | sort | awk '{print $2}'  > result.txt

おすすめ記事