Forum serwisu Linux.pl
Witamy,
Gość
.
Zaloguj się
lub
zarejestruj
. Czy dotarł do Ciebie
email aktywacyjny?
1 Godzina
1 Dzień
1 Tydzień
1 Miesiąc
Zawsze
Zaloguj się podając nazwę użytkownika, hasło i długość sesji
Aktualności:
Start
Pomoc
Szukaj
Kalendarz
Pokaż kalendarz
Dodaj wydarzenie
Zaloguj się
Zarejestruj się
Regulamin
Forum Linux.pl
»
Programowanie
»
Języki skryptowe
»
Jak dodac liczby w kolumnie
Linux.pl
»
Baza sprzętu
»
Rozdajemy Linuksa
»
Poczta Linux.pl
»
Hosting Linux.pl
»
Nowe posty
Nowa wersja libreoffice
(0)
Dzisiaj
o 15:25:44
Dystrybucja - środowisko graficzna dla amigowca (MUI)
(4)
Dzisiaj
o 12:14:25
Co to jest ?
(1)
Dzisiaj
o 11:52:50
Jaki kod błędu zwracać z kernela?
(3)
2024-06-09, 12:29:22
Diablo 2 w OpenDiablo2
(4)
2024-06-07, 12:56:21
Chrome vs Firefox – która przeglądarka internetowa jest lepsza
(3)
2024-06-05, 04:06:26
ePBF & Observability meetup in Warsaw
(0)
2024-05-16, 08:51:28
Linux Mint 21.3 XFCE brak dźwieku po paru minutach (karta muzyczna zintegrowana)
(6)
2024-05-15, 08:24:30
Webmin - nie mogę uruchomić lokalnie wirtualnego hosta
(1)
2024-05-13, 17:06:50
Linux Mint 21.3 Virginia brak dźwięku
(9)
2024-05-11, 12:41:15
« poprzedni
następny »
Drukuj
Strony:
1
[
2
]
Do dołu
Autor
Wątek: Jak dodac liczby w kolumnie (Przeczytany 17406 razy)
xis
Gość
Jak dodac liczby w kolumnie
«
Odpowiedź #15 dnia:
2005-05-23, 17:41:04 »
Faktycznie, nie zrozumialem pytania
suma=0; for i in `cat plik.txt | awk '{ print $2 }' `; do [ -z `echo $i | egrep '^[0-9]$'` ] || suma=`expr $suma + $i`; done; echo $suma
Troche wyjasnien:
sume ustawiamy domyslnie na 0,
pozniej wyswietlamy plik linijka po linijce (for $i in `cat....`)
filtrujemy wyjscie, zeby dostac tylko druga kolumne (awk)
sprawdzamy, czy mamy liczbe ( [ -z .... egrep ....] || ....)
dodajemy jesli tak (expr)
krecimy lub konczymy petle (done)
wyswietlamy wynik (echo)
Zapisane
klimat
Gość
Jak dodac liczby w kolumnie
«
Odpowiedź #16 dnia:
2005-05-23, 18:39:37 »
Kurde juz jest lepiej ale dalej nie dziala. Mysle i mysle i nie wiem co jest zle bo caly czas mi zwraca 0
nie wiem tylko dlaczego (to czy sprawdza czy znak jest liczba to juz nie jest takie wazne byle dodalo). Z gory wielkie dzieki ze chcesz wogule mi pomoc
Zapisane
xis
Gość
Jak dodac liczby w kolumnie
«
Odpowiedź #17 dnia:
2005-05-23, 18:50:05 »
2005-05-23 18:39:37 klimat napisał:
> Kurde juz jest lepiej ale dalej nie dziala. Mysle i mysle i nie wiem co jest zle bo caly czas mi
> zwraca 0
nie wiem tylko dlaczego (to czy sprawdza czy znak jest liczba to juz nie jest takie
> wazne byle dodalo). Z gory wielkie dzieki ze chcesz wogule mi pomoc
^[0-9]$ -- zamień to na ^[0-9]*$'
Polecenie sprawdzało, czy wartośc w kolumnie jest CYFRĄ, a teraz będzie sprawdzało czy jest liczbą.
Zapisane
klimat
Gość
Jak dodac liczby w kolumnie
«
Odpowiedź #18 dnia:
2005-05-23, 19:01:01 »
hehe smieszna sytuacja wszystko pieknie dziala ale NIE DZIALA dodaje liczby typui 235 ale juz nie dodaje liczb 0.5 czy liczby 1.34 ;( normalnie do nerwicy mnie to doprowdzi. Koncowka skryptu mi zostalo musze tylko to dodac a nie wiem jak (zrozumiem jak juz nie bedzie chcialo ci sie odpisywac). moj nr gg jak bys chcial mi na gg mozesz zostawic wiadomosc 3572803
Zapisane
xis
Gość
Jak dodac liczby w kolumnie
«
Odpowiedź #19 dnia:
2005-05-23, 19:40:56 »
Szkoda, że od razu nie powiedziałeś, że nie chodzi o liczby całkowite.
Niestety, expr w takim wypadku odpada, bo - o ile mi wiadomo - potrafi wykonywać tylko proste operacje arytmetyczne na liczbach całkowitych.
Wydaje mi się, że musisz posłużyć się czymś 'mocniejszym' niż bash (choć mogę się mylić, bo nie znam bash'a w 100%).
Proponuję wsadową wersję php, lub perla.
Ostatecznie możesz 'męczyć' awk np. tak:
suma=0;
for i in `cat plik.txt | awk '{ print $2 }' `; do
[ -z `echo "$i" | egrep '^[0-9]*[.,]*[0-9]*$'` ] ||
echo $i | awk -v s=$suma '{ print s+$1 }';
done;
echo $suma
Ale tu bardzo łatwo się 'machnąć' z utratą liczb za przecinkiem (ten przykład właśnie jest wadliwy) i w ogóle ciężko tu o jakąkolwiek czytelność.
W bashu niestety więcej nie pomogę :/
Zapisane
xis
Gość
Jak dodac liczby w kolumnie
«
Odpowiedź #20 dnia:
2005-05-23, 19:48:42 »
Oczywiście znów literówka
suma=0;
for i in `cat plik.txt | awk '{ print $2 }' `; do
[ -z `echo "$i" | egrep '^[0-9]*[.,]*[0-9]*$'` ] ||
suma=`echo '' | awk -v s="$suma" -v i="$i" '{ print s+i }'`;
done;
echo $suma
Trochę koślawe, ale działa. Tzn nie wiem dlaczego ogranicza wynik do jednej liczby po przecinku.
Powodzenia w dalszym odkrywaniu
Zapisane
klimat
Gość
Jak dodac liczby w kolumnie
«
Odpowiedź #21 dnia:
2005-05-23, 20:05:27 »
Niestety nie dziala chyba ide sie pochlastac i pociac ;( mecze to i w jedna strone i wdruga i zero nie moge tego dodac;( caly czas 0 i 0 i 0 porazka. POMOCY
Zapisane
micu
Gość
Jak dodac liczby w kolumnie
«
Odpowiedź #22 dnia:
2005-05-24, 11:28:28 »
Witam!
Przy zalozeniu, ze plik DANE zawiera kolumny oddzielone spacjami (tak jak w Twoim przykladzie), sprobuj ponizszego polecenia:
awk '{for (i=0;i
+=$(i+1) ; else continue ; MAXNF=NF>MAXNF?NF:MAXNF } END { for (i=0;i
; print}' DANE
Wyswietla ono sumy dla dowolnej liczby kolumn w wierszach z pominieciem danych nie bedacych liczbami. Jak widzisz, AWK i wyrazenia regularne to potezne narzedzia.
Pozdrawiam
Micu
PS. Zakladam, ze dzialasz pod Linuksem i uzywasz GNU awk. Dla Solarisa zamiast 'awk' uzyj 'nawk'.
Zapisane
micu
Gość
Jak dodac liczby w kolumnie
«
Odpowiedź #23 dnia:
2005-05-24, 12:10:08 »
Aha, dla liczb rzeczywistych bedzie tak:
nawk '{for (i=0;i
+=$(i+1) ; MAXNF=NF>MAXNF?NF:MAXNF } END { for (i=0;i
; print}' DANE
Z wyrazenia regularnego (i konstrukcji if) mozna zrezygnowac, bo dla pol nie-numerycznych awk przyjmuje wartosc 0 (wygodne, nieprawdaz :-) ). Jesli za jakich powodow uparlbys sie na zapisanie wyrazenia regularnego, to zamiast wyrazenia opisujacego liczbe naturalna (w skladni 'if') z poprzedniego przykladu : /^[0-9]+$/ wpisz opis liczby rzeczywistej : /^[-|+]?[0-9]*[.]?[0-9]+$/ .
Pozdrawiam
Micu
Zapisane
klimat
Gość
Jak dodac liczby w kolumnie
«
Odpowiedź #24 dnia:
2005-05-24, 15:01:13 »
Micu wielkie dzieki
Zapisane
Drukuj
Strony:
1
[
2
]
Do góry
« poprzedni
następny »
Forum Linux.pl
»
Programowanie
»
Języki skryptowe
»
Jak dodac liczby w kolumnie