ファイルに隠された数値でファイルの行をソートします。

ファイルに隠された数値でファイルの行をソートします。

USBフラッシュドライブのエラーをテストするツールを使用するためのBashスクリプトを作成していますf3。次のテキストがあります(f3readプログラムからログを収集して生成されます)。

2017-10-25_09:30:22/sdf.log:Data LOST: 4.00 KB (8 sectors)
2017-10-25_09:30:22/sdi.log:Data LOST: 5.00 KB (10 sectors)
2017-10-25_09:30:22/sdj.log:Data LOST: 2.35 MB (4822 sectors)
2017-10-25_09:30:22/sdn.log:Data LOST: 5.00 KB (10 sectors)
2017-10-25_09:30:22/sdo.log:Data LOST: 4.00 KB (8 sectors)
2017-10-25_09:30:22/sdp.log:Data LOST: 4.00 KB (8 sectors)
2017-10-25_09:30:22/sdq.log:Data LOST: 2.00 KB (4 sectors)
2017-10-25_14:37:03/sdb.log:Data LOST: 5.00 KB (10 sectors)
2017-10-25_14:37:03/sdc.log:Data LOST: 3.00 KB (6 sectors)
2017-10-26_09:17:59/sdd.log:Data LOST: 3.00 KB (6 sectors)
2017-10-26_09:17:59/sde.log:Data LOST: 2.00 KB (4 sectors)
2017-10-26_09:17:59/sdf.log:Data LOST: 3.00 KB (6 sectors)
2017-10-26_09:17:59/sdg.log:Data LOST: 6.00 KB (12 sectors)
2017-10-26_09:17:59/sdh.log:Data LOST: 611.29 MB (1251918 sectors)
2017-10-26_09:17:59/sdi.log:Data LOST: 6.00 KB (12 sectors)
2017-10-26_09:17:59/sdl.log:Data LOST: 6.00 KB (12 sectors)
2017-10-26_09:17:59/sdo.log:Data LOST: 3.00 KB (6 sectors)
2017-10-26_09:17:59/sdp.log:Data LOST: 2.00 KB (4 sectors)
2017-10-26_09:17:59/sdq.log:Data LOST: 414.60 MB (849106 sectors)
2017-10-26_09:17:59/sdr.log:Data LOST: 65.29 MB (133712 sectors)
2017-10-26_09:17:59/sds.log:Data LOST: 5.00 KB (10 sectors)

行の最後に表示される不良セクタの数に基づいて行をソートしたいと思います。試してみましたが、オプションを使用して好きなように機能させるsort方法がわかりません。--key

レポート用にドライブ名(sda、sdbなど)を抽出する必要があるため、最初に行を切り捨てることはできません。

ベストアンサー1

POSIXlyでは、次のことができます。

sort -t '(' -k2n < file

つまり、フィールド区切り文字を設定し、(2番目のフィールド(または2番目のフィールドで始まる行の一部)を数字で並べ替えます。

または、 5番目のフィールドのデフォルトのフィールド区切り文字(空白以外の項目から空白への切り替え)を維持し、" (12"次のように使用できます。

sort -k5.3n < file

(つまり、 5番目のフィールド3番目の文字から始まる行の部分を数字で並べ替えます。)

同点の場合は、行全体の語彙比較である最終ソート順が適用されます(年代順はここで便利に提供されます)。

ドライブ名で関係をソートするには、次のようにします。

sort -t '(' -k2n -k1.21

(2番目のキーは、文字21で始まる行の一部、語彙比較です。)

おすすめ記事