我正在编写我的第一个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
答案 0 :(得分:1)
告诉sort
以数字方式使用第二列:
printf '%s\n' "${count_visits[@]}" | sort -k2n