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