Strona 1 z 1

[+][AWK] obliczenia

: 25 lutego 2014, 17:17
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.

: 25 lutego 2014, 17:42
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

: 25 lutego 2014, 18:04
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?

: 25 lutego 2014, 20:56
autor: Yampress

: 26 lutego 2014, 20:37
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

: 26 lutego 2014, 20:49
autor: kodama
O, dziękuję, to jest eleganckie.