Kiitos kaikille vastauksista... !!!
Koska alkuperäinen scriptini (jos sitä nyt scriptiksi voi edes kutsua
) on bashiä, niin päädyin lopulta kuitenkin yrittämään UbunTuxin esimerkillä...
#!/bin/bash
tiedosto=/home/tjka/temp.txt
rivit=$(wc -l $tiedosto| awk '{ print $1 }')
echo rivejä $rivit
a=1
until [ $a -eq $(expr $rivit + 1) ] ; do
luku=$(sed -n "$a"p $tiedosto)
if [ $luku -lt 5 ] && [ $luku -gt -5 ] ; then echo rivillä $a luku ei kuuluu joukkoon
else
echo rivillä $a luku kuuluu joukkoon
fi
a=$(expr $a + 1)
done
Ongelma on ettei tuokaan toiminut ihan niinkuin pitäisi.
Eli tein kokeeksi seuravanlaisen tiedoston (temp.txt) ...
0
- 13
0
0
0
0
0
- 11
+ 2
0
+ 1
0
0
0
0
...ja tulos näytti seuraavanlaiselta...
rivejä 15
rivillä 1 luku ei kuuluu joukkoon
./bash1.sh: line 9: [: too many arguments
rivillä 2 luku kuuluu joukkoon
rivillä 3 luku ei kuuluu joukkoon
rivillä 4 luku ei kuuluu joukkoon
rivillä 5 luku ei kuuluu joukkoon
rivillä 6 luku ei kuuluu joukkoon
rivillä 7 luku ei kuuluu joukkoon
./bash1.sh: line 9: [: too many arguments
rivillä 8 luku kuuluu joukkoon
./bash1.sh: line 9: [: too many arguments
rivillä 9 luku kuuluu joukkoon
rivillä 10 luku ei kuuluu joukkoon
./bash1.sh: line 9: [: too many arguments
rivillä 11 luku kuuluu joukkoon
rivillä 12 luku ei kuuluu joukkoon
rivillä 13 luku ei kuuluu joukkoon
rivillä 14 luku ei kuuluu joukkoon
rivillä 15 luku ei kuuluu joukkoon
..eli scripti ei tunnistanut (?) että plus tai miinusmerkin jälkeen tulee välilyönti ennen numeroa.
Jokaisella rivillä siis 4 merkkiä jonka jälkeen tulee rivinvaihto.
"""..tässä välissä hurjaa Googlausta..
"""
...ja onnistuin löytämään allolevan koodinpätkän jolla homma ratkesi
sed -e 's/[\t ]//g;/^$/d'
...eli tuo poistaa välilyönnit.
Loppu onkin sitten vain pientä modausta, jossa echo't muutetaan arvoiksi joita vertaillaan.
Se toimii sittenkin !!!
-tjka-