2

以下のように、ファイルにいくつかの行があります。

/adbc/eee/ddd/baa/
/adbc/fff/ddd/ccc/avfff/
/adbc/ccc/ddd/b/
/adbc/fff/ddd/c/
/adbc/ccc/ddd/bf/
/adbc/ccc/ddd/bc/

ソート アルゴリズムは、最初に last の前に文字列を取得する必要があります/。つまり、次のようになります。

baa
avfff
b
c
bf
bc

次に、最初の文字で並べ替え、次に文字列の長さで並べ替え、次にアルファベット順に並べ替えます。

期待される結果は

/adbc/fff/ddd/ccc/avfff/
/adbc/ccc/ddd/b/
/adbc/ccc/ddd/bc/
/adbc/ccc/ddd/bf/
/adbc/eee/ddd/baa/
/adbc/fff/ddd/c/ 
4

2 に答える 2

1
cat sortthisfile | while read line
do
    field=$( echo $line | sed -e 's:/$::' -e 's:.*/::' )
    firstchar=${field:0:1}
    fieldlen=${#field}
    echo "${firstchar},${fieldlen},${field},${line}"
done | sort-k1,1 -k2,2n -k3,3 -t, | sed 's:.*,/::'

明らかに、sortthisfileあなたのファイルの名前です。

于 2013-11-13T03:15:20.057 に答える