linux - 在 BASH/Shell 上连续排序数字

标签 linux bash shell ksh

<分区>

有一行:

00000000000000;000022233333;2;NONE;true;100,100,5,1,28;UNKNOWN

需要排序100,100,5,1,28 数字降序排列。

例子:

00000000000000;000022233333;2;NONE;true;100,100,28,5,1;UNKNOWN

最佳答案

试试这个;

#!/bin/bash
while read line           
do   
beforeC=$(echo "$line" | cut -f-5 -d';')
sortcolumn=$(echo "$line" | awk -F ";" '{print $6}' | tr -t , "\n" | sort -r -n | xargs | sed 's/ /,/g') 
afterC=$(echo "$line" | cut -f7- -d';')
echo -e $beforeC";"$sortcolumn";"$afterC
done <file 


user@host:/tmp/test$ cat file 
00000000000000;000022233333;2;NONE;true;100,100,5,1,28;UNKNOWN
00000000000000;000022233333;2;NONE;true;99,100,5,1,28;UNKNOWN
00000000000000;000022233333;2;NONE;true;100,99,5,1,28;UNKNOWN
00000000000000;000022233333;2;NONE;true;100,100,4,1,28;UNKNOWN
00000000000000;000022233333;2;NONE;true;100,100,4,0,28;UNKNOWN
00000000000000;000022233333;2;NONE;true;100,100,4,1,27;UNKNOWN

user@host:/tmp/test$ ./sortAColumn.sh 
00000000000000;000022233333;2;NONE;true;100,100,28,5,1;UNKNOWN
00000000000000;000022233333;2;NONE;true;100,99,28,5,1;UNKNOWN
00000000000000;000022233333;2;NONE;true;100,99,28,5,1;UNKNOWN
00000000000000;000022233333;2;NONE;true;100,100,28,4,1;UNKNOWN
00000000000000;000022233333;2;NONE;true;100,100,28,4,0;UNKNOWN
00000000000000;000022233333;2;NONE;true;100,100,27,4,1;UNKNOWN

关于linux - 在 BASH/Shell 上连续排序数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38652991/

相关文章:

linux - Bash 脚本变量输出不起作用

linux - 在 bash 脚本中找不到检测命令

linux - Shell 脚本 - 如何根据输入模拟某些结果?

bash - 显示文件和目录中每个单词出现频率的 Shell 脚本

linux - 在中断中获取 current->pid

linux - Accept 是否可能为同一台机器上的不同 tcp 连接返回相同的套接字值

linux - 树莓派,处理 Crontab

linux - Bash 脚本日期错误

python - 如何将 Bash 变量传递给 Python?

python - shell脚本替换?