Awk – sumowanie przypisanych liczb?

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Mały 1
Zakręcona Traszka
Zakręcona Traszka
Posty: 548
Rejestracja: 24 sty 2008, 15:55
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: LXDE
Architektura: x86_64

Awk – sumowanie przypisanych liczb?

Post autor: Mały 1 »

Witam!

Mam taki problem.

Chciałbym w awk dodać dwie liczby np.:

Kod: Zaznacz cały

awk '{ sum += 3 + 3 } END { print sum }' 
ale dostaje pusty wynik.

Jak prawidłowo dodaje się liczby, które są przypisane przez użytkownika?

Dziękuje za informacje.
Awatar użytkownika
leon1313
Zakręcona Traszka
Zakręcona Traszka
Posty: 668
Rejestracja: 02 sty 2006, 19:35
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: KDE Plasma
Architektura: x86

Re: Awk – sumowanie przypisanych liczb?

Post autor: leon1313 »

echo ""| awk '{ sum = 3 + 3 } END { print sum }'
To echo jest potrzebne, bo awk oczekuje danych wejciowych z pliku lub standardowego wejscia..
Mały 1
Zakręcona Traszka
Zakręcona Traszka
Posty: 548
Rejestracja: 24 sty 2008, 15:55
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: LXDE
Architektura: x86_64

Re: Awk – sumowanie przypisanych liczb?

Post autor: Mały 1 »

Rozumiem, ale jak to zrobić bez echo? Można to zrobić tylko za pomocą awk?
Awatar użytkownika
leon1313
Zakręcona Traszka
Zakręcona Traszka
Posty: 668
Rejestracja: 02 sty 2006, 19:35
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: KDE Plasma
Architektura: x86

Re: Awk – sumowanie przypisanych liczb?

Post autor: leon1313 »

W bloku BEGIN, który jest wykonywany przed pobraniem danych wejściowych.

Kod: Zaznacz cały

awk 'BEGIN{ sum = 3 + 3 ; print sum}' 
Mały 1
Zakręcona Traszka
Zakręcona Traszka
Posty: 548
Rejestracja: 24 sty 2008, 15:55
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: LXDE
Architektura: x86_64

Re: Awk – sumowanie przypisanych liczb?

Post autor: Mały 1 »

Dziękuje, właśnie na myśli miałem takie rozwiązanie.

Dopiero się uczę awk więc przedstawię kolejny przykład z którym mam problem:

Tym poleceniem pobieram sumę z pliku

Kod: Zaznacz cały

awk '{a+=$1} END {print a}' < plik
a tym z drugiego:

Kod: Zaznacz cały

awk '{a+=$1} END {print a}' < plik2
Teraz chciałbym zsumować wynik powyższych pleceń, ale nie wiem jak to zapisać w jednej linii?

Kod: Zaznacz cały

awk '{ sum += awk '{a+=$1} END {print a}' < plik + awk '{a+=$1} END {print a}' < plik2 } END print sum }'
Awatar użytkownika
ethanak
Wygnańcy
Posty: 3054
Rejestracja: 04 gru 2007, 13:19
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Bielsko-Biała
Kontakt:

Re: Awk – sumowanie przypisanych liczb?

Post autor: ethanak »

Zajrzyj do "man awk" i zwróć uwagę na getline
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 5 gości