Uzun bir süredir 2 argümana sahip olacak bir senaryo yazmak için mücadele ediyorum, 1 bir yıl seçmeyi ve 2 minimum, maksimum, ortalama veya tüm ilgili dosyalardan son satır olarak gösterilmesini isteyeceğim seçilen yıla kadar.
Temel olarak, bu dizinlerde farklı yıllar (2000, 2001, 2002 vb.) Alt dizinleri içeren bir dizin var aylar ve günler için farklı dizinler hakkında bilgilendiren (a) dosyaları (gerçek bilgi değil) içeren alt dizinler son hat olarak şehirler. Bu dizin ağacının bir parçası:
.
|-- 2000
| |-- 01
| | `-- 18
| | `-- ff_1177818640
| |-- 02
| | |-- 02
| | | `-- ff_1669027271
| | |-- 03
| | | `-- ff_234075290
| | |-- 10
| | | `-- ff_1584524530
| | |-- 14
| | | `-- ff_113807345
| | `-- 17
| | `-- ff_1452228827
| |-- 03
| | |-- 06
| | | `-- ff_58914249
| | `-- 11
| | `-- ff_2828212321
| |-- 04
| | `-- 17
| | `-- ff_302131884
| |-- 06
| | `-- 13
| | `-- ff_2175615745
| |-- 07
| | |-- 07
| | | `-- ff_918426998
| | `-- 24
| | `-- ff_2808316425
| |-- 08
| | `-- 27
| | `-- ff_1449825497
| |-- 09
| | `-- 19
| | `-- ff_110255856
| `-- 12
| `-- 08
| `-- ff_1621190
|-- 2001
| |-- 03
| | `-- 21
| | `-- ff_517010375
| |-- 05
| | `-- 27
| | `-- ff_1458621098
| |-- 06
| | |-- 07
| | | `-- ff_155853916
| | |-- 25
| | | |-- ff_2382312387
| | | `-- ff_270731174
| | `-- 29
| | `-- ff_3228522859
| |-- 07
| | `-- 28
| | `-- ff_3215021752
| |-- 09
| | `-- 24
| | `-- ff_1080314364
| `-- 11
| `-- 24
| `-- ff_2313722442
Tüm dosyalar aynı şekilde biçimlendirilir:
2019-04-03
Wednesday
Newcastle-upon-Tyne
255362
Hangi yıl (o dizini seçerek) gereken ve daha sonra ortalama, minimum, maksimum veya tüm (nüfusun son satırı olan) nüfus için görüntülenmesini isteyip istemediğinizi sormak için bir komut dosyası yazmanız gerekir.
Şimdiye kadar sahip olduğum şey bu:
#!/bin/bash
function min () {
echo $(sort -n populations | head -1)
}
function max () {
echo $(sort -n populations | tail -1)
}
function avg () {
count=0
sum=0
while read line ; do
num='echo ${line#* }'
sum='expr $sum + $num'
count='expr $count + 1'
done < populations
avg='expr $sum / $count'
echo $avg
}
echo "Please enter the year: "
read s1
echo "
Enter an option:
1. Minimum
2. Maximum
3. Average
4. All"
read s2
#echo $s2
for file in $(find ~/filesToSort/$s1 -type f) ; do
tail -1 $file >> populations
done
echo $(cat populations)
#min
#max
#avg
rm populations
Bu, dizinleri seçmeme izin veriyor, ancak ihtiyacım olan cevapları vermiyor, sadece dosyalarımın son satırlarını tükürüyor.