如何通过 bash 脚本从后到前对 linux 中的数据进行排序

How to sort data in linux by bash scripting from last to first

如何在linux中通过命令在控制台中从后到前对文本文件中的数据进行排序?

我有:

1:a k2:b k3:c k

我需要:

k k3:c k2:b 1:a

假设样本输入在一个变量中:

$ x='1:a k2:b k3:c k'

反转 space 分隔值方向的一个想法:

$ tr ' ' '\n' <<< "${x}" | tac | tr '\n' ' '
k k3:c k2:b 1:a

另一个使用 bash/for 循环的想法:

$ unset pfx y
$ for i in ${x}            # do not wrap ${x} in double quotes since we DO want word splitting to occur
do
    y="${i}${pfx}${y}"
    pfx=" " 
done
$ echo "${y}"
k k3:c k2:b 1:a

使用 awk 的另一个想法:

$ awk '{for (i=NF;i>=1;i--){printf "%s%s",pfx,$i;pfx=" "};printf "\n"}' <<< "$x"
k k3:c k2:b 1:a