[+][AWK] obliczenia

Potrzebujesz pomocy z C, C++, perl, python, itp.
Awatar użytkownika
kodama
Junior Member
Posty: 633
Rejestracja: 23 maja 2010, 22:30
Lokalizacja: Poznań

[+][AWK] obliczenia

Post autor: kodama »

Witajcie
Nie mogę sobie poradzić z jednym tematem w awk. Mam taką linijkę, która czyta z pliku wiersz po wierszu i wyświetla odpowiednie interesujące mnie kolumny. Banał:

Kod: Zaznacz cały

...
awk '{ print  $1 "   " $6, $7 }'
..
Jedna z tych wartości musi zostać podzielona przez pewną stałą wartość zadeklarowaną w skrypcie. I tu problem, bo za nic nie mogę sobie z tym dać rady.

Można prosić jakąś podpowiedź, pomoc? Z góry dzięki.
Awatar użytkownika
LordRuthwen
Moderator
Posty: 2341
Rejestracja: 18 września 2009, 21:45
Lokalizacja: klikash?

Post autor: LordRuthwen »

Kod: Zaznacz cały

lukasz@admin:~$ echo "1 2 3 4 5 6 7" > test.txt
lukasz@admin:~$ cat test.txt
1 2 3 4 5 6 7
lukasz@admin:~$ cat test.txt | awk '{print $2}'
2
lukasz@admin:~$ cat test.txt | awk '{print $2*5 }'
10

A tu w skrypcie:

Kod: Zaznacz cały

lukasz@admin:~$ cat test.txt
#!/bin/bash
a="1 2 3 4 5 6 7"
b=5
echo $a | awk '{print $2*'$b' }'

lukasz@admin:~$ ./test.txt
10
Awatar użytkownika
kodama
Junior Member
Posty: 633
Rejestracja: 23 maja 2010, 22:30
Lokalizacja: Poznań

Post autor: kodama »

No dobra, ale banał, a ja kombinowałem coś z bc itd :D Ja mam w tych kolumnach duże liczby typu 30720000 i jak je dzielę przez to co ma być podzielone to dostaję rzeczy np. 5.67004e-05. Jak toto zrobić, żeby pokazywało "cały' wynik, zaokrąglić albo coś żeby było w formacie AA.BB, w sensie 2 liczby przed i 2 liczby po przecinku?
Awatar użytkownika
Yampress
Administrator
Posty: 6416
Rejestracja: 09 sierpnia 2007, 21:41
Lokalizacja: PL

Post autor: Yampress »

Awatar użytkownika
lessmian2
Member
Posty: 1088
Rejestracja: 30 kwietnia 2008, 19:38
Lokalizacja: Kraków

Post autor: lessmian2 »

Kod: Zaznacz cały

man awk
man printf

Kod: Zaznacz cały

echo 3  | awk '{printf("%1.6f\n", $1/12444)}'
0.000241
Awatar użytkownika
kodama
Junior Member
Posty: 633
Rejestracja: 23 maja 2010, 22:30
Lokalizacja: Poznań

Post autor: kodama »

O, dziękuję, to jest eleganckie.
ODPOWIEDZ