簡體   English   中英

如何在Bash中使用子字符串對字符串數組進行排序

[英]How to sort an array of strings using substring with Bash

我正在寫我的第一個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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM