Nowe posty

xx Problem ze sterownikami. (5)
2024-04-13, 21:25:16
xx Instalacja xfce4 (2)
2024-04-13, 16:20:17
xx Serie kompilacji bez instalacji dla “emerge” w Gentoo (2)
2024-04-08, 18:40:04
xx Plasma 6 w Neonie ssie trochę mniej ... (17)
2024-04-05, 10:03:46
xx Problem z Linux Lite po instalacji (3)
2024-04-03, 14:23:40
xx Jak właczyć num locka przy starcie systemu debian 12? (12)
2024-04-02, 17:43:54
xx Brak dźwieku w systemie. (5)
2024-04-02, 16:13:41
xx Dystrybucja pod HP Omen (7)
2024-03-29, 11:33:05
xx [Poradnik] Wyszukiwanie Sterowników (2)
2024-03-27, 21:08:23
xx Ile pingwinów? (1)
2024-03-27, 08:59:24

Autor Wątek: Dowiązywanie do konca pliku  (Przeczytany 3118 razy)

kubatur0

  • Gość
Dowiązywanie do konca pliku
« dnia: 2010-05-11, 15:22:51 »
Witam, mam pewien problem... otoz am funkcje awk ktora wczytuje pola $1,$2 i $5. Teraz mam funkcje liczaca srednia z wartosci ktore sa w polu $5. Kiedy tak jak wyzej wykorzystuje >>summary to mi sie dopisuje pod poprzednim textem, a chcialbym zeby wyswietlalo sie obok. Czy ktos moze wie jak rozwiazac ten problem ?

arctgx

  • Gość
Dowiązywanie do konca pliku
« Odpowiedź #1 dnia: 2010-05-11, 17:01:15 »
Może bardziej precyzyjnie napisałbyś. Nie wiem jak reszcie czytających, ale mi trudno wyobrazić sobie, obok czego chcesz postawić wynik (tzn. czym jest ten poprzedni tekst).

kubatur0

  • Gość
Dowiązywanie do konca pliku
« Odpowiedź #2 dnia: 2010-05-11, 18:05:00 »
tzn tak.. wyswietla mi
Imie nazwisko            ID         Nick         "i tu chcialbym zeby wyswietalalo wartosc sredniej"

Imie nazwisko, ID i nick sa z jednej fuinkcji:
cat mainlist | awk -F";" '{print $1"\\t\\t"$2"\\t\\t"$5}' > summary
i dalej mam funkcje ktora dzieli $5 (wartosci sa oddzielone przecinkami) i robi z nich srednia

cat mainlist | awk -F";" '{split ($5,marks,","); n=0; sum=0; for (n in marks){
sum+=marks[n]
n++
}
n--
print suma/n}' >> summary
i to co przed chwila zapisalem wyswietla sie w drugiej linijce pod Imie nazwisko   ID   Nick, a chcialbym zeby wyswietlalo sie tak jak napisalem na samej gorze:)


Problem udalo mi sie rozwiazac naokolo... zostawilem tak jak bylo i pod uzytkownikiem wyswietlam srednia. Dzieki za pomoc

___________
arctgx: BBCode

arctgx

  • Gość
Dowiązywanie do konca pliku
« Odpowiedź #3 dnia: 2010-05-11, 23:49:54 »
Zniknąłem na kilka godzin, zapominając się wylogować.

OK, dopiero po podpowiedzi łapię, że pole $5 składa się z liczbowych podpól oddzielonych przecinkiem i chciałeś w miejsce $5 dać średnią z wartości tych podpól.
function av(marks)
{
sum=0
for (i in marks)
{
sum+=marks[i]
}
return sum/length(marks)
}
# główny kod dla (każdej) linii
{
split($5,marks,",")
print $1, $2, $3, $4, av(marks)
}
Wygodnie wpakować go w plik i dać awkowi opcję -f. Podobnie, cat jest zbędny:
awk -f plik_z_kodem mainlist