不使用awk或sed对字符串进行排序

时间:2016-04-28 10:07:06

标签: linux bash

嗨我在课堂上有一份作业,其中一部分是根据篇幅对字符串列表进行排序。

我们无法使用sedbash,只能使用ten car something plane stack overflow 。假设我有类似的东西:

something
overflow
stack
plane
ten 
car

排序的最终结果应该是

extSort(){
    total=$(cat $file| wc -w)
    count="$(cat $file | tr ' ' '\n' | tr -d '[:punct:]' | sort | uniq -c | sort -k1,1nr -k2 -n)"
    while read line; do 
        if [ $(echo $line | wc -w) -eq 1 ]; then
            continue
        fi
    current=$(echo $line | cut -d " " -f 1)
    percent=$(echo "$current/$total*100" | bc -l)
    round=$(echo "scale=2; $percent/1" | bc -l)"%%"
    printf "$line "$round"\n" done <<<"$input"
} 

这意味着顶部的单词越长,按字母顺序排列的大小相同。

这是我迄今为止所做的:

find . -printf "%f/n" |
hexdump -v -e '/1 "%03d "' -e '/1 "0x%02X "' -e '/1 "%c\n"'

1 个答案:

答案 0 :(得分:0)

$ echo "ten
car 
something
plane 
stack
overflow" | while read -r line || [[ -n "$line" ]]; do echo "${#line} ${line}"; done | sort -r -k 1,2 | cut -d ' ' -f 2
something
overflow
stack
plane
ten
car
$