期間列に基づいてファイルをソートする方法は?

期間列に基づいてファイルをソートする方法は?

次の内容を含むファイルを並べ替えるにはどうすればよいですか? (s=秒、h=時間、d=日、m=分)

1s
2s
1h
2h
1m
2m
2s
1d
1m

ベストアンサー1

awk '{ unitvalue=$1; }; 
    /s/ { m=1 }; /m/ { m=60 }; /h/ { m=3600 }; /d/ { m=86400 }; 
    { sub("[smhd]","",unitvalue); unitvalue=unitvalue*m; 
    print unitvalue " " $1; }' input |
        sort -n | awk '{ print $2 }'
1s
2s
2s
1m
1m
2m
1h
2h
1d

おすすめ記事