【问题标题】:How to sort data in linux by bash scripting from last to first如何通过bash脚本从最后到第一个对linux中的数据进行排序
【发布时间】:2021-10-03 17:04:39
【问题描述】:

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

我有:

1:a k2:b k3:c k

我需要:

k k3:c k2:b 1:a

【问题讨论】:

  • 排序算法是什么?
  • 输入的格式是什么?那是文件的内容吗?一个变量?数组?你真的是在排序还是只是在反转条目?你试过什么(代码)?

标签: bash sorting console


【解决方案1】:

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

$ 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

【讨论】:

  • 好的,谢谢,但是当字符串为“1:a\k2:b\k3:c\k”时我应该改变什么?如何将“空格”更改为“\”?我说的是第一个答案 "$ tr ' ' '\n'
  • @szytynamiare 在tr 命令中,您将用'\\' 替换' ';如果您仍然无法让代码与您的(真实)数据一起使用,请考虑提出一个新问题并提供您正在使用的实际数据
猜你喜欢
  • 2012-10-28
  • 2012-05-16
  • 1970-01-01
  • 2015-08-14
  • 1970-01-01
  • 1970-01-01
  • 2014-12-07
  • 1970-01-01
  • 2017-07-08
相关资源
最近更新 更多