awk '{print $NF,$0}' file | sort | cut -f2- -d' '
基本的に、このコマンドは次のことを行います:
<オール>行内のフィールドの順序を逆にするための perl のワンライナー:
perl -lne 'print join " ", reverse split / /'
一度使用して、出力を並べ替えにパイプしてからパイプで戻すと、目的が達成されます。 / / を変更できます / +/ まで そのため、スペースが圧迫されます。もちろん、行を分割する正規表現は自由に使用できます。
このようなもの
awk '{print $NF"|"$0}' file | sort -t"|" -k1 | awk -F"|" '{print $NF }'
Perl コマンド ラインを次に示します (シェルによっては、$ をエスケープする必要があることに注意してください)。 s):
perl -e "print sort {(split '/', $a)[-1] <=> (split '/', $b)[-1]} <>"
リストをパイプするか、リストがファイル内にある場合は、ファイル名をコマンドラインの最後に置きます。
このスクリプトは実際にはデータを変更しないため、使用する区切り文字について注意する必要はありません。
出力例は次のとおりです:
>perl -e "print sort {(split '/', $a)[-1] <=> (split '/', $b)[-1]} " files.txt
/a/e/f/g/h/01-do-this-first
/a/b/c/10-foo
/a/b/c/20-bar
/a/d/30-bob
/a/b/c/50-baz
/a/e/f/g/h/99-local