gpt4 book ai didi

arrays - 如何使用带有 Bash 的子字符串对字符串数组进行排序

转载 作者:太空宇宙 更新时间:2023-11-04 10:11:14 26 4
gpt4 key购买 nike

我正在编写我的第一个 unix bash 脚本,我发现它真的很难,因为我以前从未使用过 linux。这是大学的作业。我尝试了很多东西,我一直在寻找几个小时,但我就是找不到合适的解决方案。有人可以给我一些指导,说明如何使用数组对字符串进行排序,如下所示:

room_100056.dat 4
room_8973.dat 2
room_7764.dat 1
room_2092.dat 20

为此:

room_7764.dat 1
room_8973.dat 2
room_10056.dat 4
room_2092.dat 20

在对初始数组进行排序时,我正在创建一个包含已排序数据的新数组。问题是在排序后的数组中,数据是这样打印的:

room_100056.dat 
room_8973.dat
room_7764.dat
room_2092.dat
1
2
4
20

代码:

file=$1/*.dat

count_visits=()

for room in $file
do
visits=$(grep "<Visit>" $room | wc -l)
filename=$(basename $room)
count_visits+=($filename$'\t'$visits)
done

sorted_visits=($(echo ${count_visits[@]} | tr " " "\n" | sort -g))
printf '%s\n' "${sorted_visits[@]}"
exit

最佳答案

告诉 sort 使用第二列的数字:

printf '%s\n' "${count_visits[@]}" | sort -k2n

关于arrays - 如何使用带有 Bash 的子字符串对字符串数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48969391/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com