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で始まる行の一部、語彙比較です。)