【发布时间】:2021-10-03 17:04:39
【问题描述】:
如何在linux中通过控制台中的命令将文本文件中的数据从后到前排序?
我有:
1:a k2:b k3:c k
我需要:
k k3:c k2:b 1:a
【问题讨论】:
-
排序算法是什么?
-
输入的格式是什么?那是文件的内容吗?一个变量?数组?你真的是在排序还是只是在反转条目?你试过什么(代码)?
如何在linux中通过控制台中的命令将文本文件中的数据从后到前排序?
我有:
1:a k2:b k3:c k
我需要:
k k3:c k2:b 1:a
【问题讨论】:
假设样本输入在一个变量中:
$ x='1:a k2:b k3:c k'
反转空格分隔值方向的一个想法:
$ 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
【讨论】:
tr 命令中,您将用'\\' 替换' ';如果您仍然无法让代码与您的(真实)数据一起使用,请考虑提出一个新问题并提供您正在使用的实际数据