Nowe posty

Autor Wątek: Jak narysowac tabelke/ramke?  (Przeczytany 12932 razy)

bryla

  • Gość
Jak narysowac tabelke/ramke?
« Odpowiedź #15 dnia: 2005-05-30, 13:14:56 »
2005-05-29 23:19:23 xis napisał:

> 2005-05-29 23:03:52 bryla napisał:
 >
 > > Czy ktos moze mi pomoc i powiedziec co oznaczaja poszczegolny znaki uzyte w tym awk
 >  >  > ps -aux | awk '{print "| " $3 "033[10G|033[15G" $4 "
 >  > |"}'
 >  > Chodzi mi dokladniej o  "033[10G|033[15G"  bo tego wogule nie kumam.Z gory
 > dziekuje
 >
 > To są polecenia terminali VT100 (o ile się orientuję) i raczej ciężko (przynajmniej mi) w
 > jednej linijce wyjaśnić znaczenie każdego znaku sterującego tutaj.
 >
 > Poleciłbym Ci za to prostrze formatowanie wyjścia za pomocą instrukcji printf (w sumie to jest
 > nawet bardziej eleganckie rozwiązanie).
 >
 > ps aux | awk '{ printf "%-10s | %5sn", $1, $4 }'
 >
 > printf przyjmuje za argument najpierw format ciągu (tu: %-10s | %5s, czyli string o długości
 > conajmniej 10 znaków, kreska pionowa i później następny pięcioznakowy string), a następnie
 > listę zmiennych (pierwsza i czwarta kolumna wyniku polecenia 'ps aux').
 >
 > Możesz zmieniać postać formatowania zgodnie z manualem awk (dział 'printf').
 >
 >
Eh wiesz co proboje i tak i na rozne inne sposoby, czytam manula proboje uzyc tej komendy co dales ps aux | awk '{ printf "%-10s | %5sn", $1, $4 }'  zeby  zrobilo mi tabelke dla wiecej niz dla dwoch zmiennych np dla 3 i pisze cos takiego
ps aux | awk '{ printf "%-10s | %5s""| ", $1, $4,  "%-10s | %5s",$5 }'
lub
ps aux | awk '{ printf "%-10s | %5s"" | " "%-10s | %5sn", $1, $4, $5 }'  
i zadna z tych propozycji nie wychodzi no lipa, pomoz jesli mozesz

bryla

  • Gość
Jak narysowac tabelke/ramke?
« Odpowiedź #16 dnia: 2005-05-30, 14:34:08 »
znalazlem problem i juz mi prawie dziala ale jest maly problem bo pierwsza linie mi dobrze wyswietla natomiast cala reszte juz przesuwa o jeden znak cos w stylu
10 15 123
 12 23 123
 12 24 153
 13 12 234
a skladnia wyglada tak
ps -aux | awk '{printf "|  %-7d|  %-6s|  %-5s|  %-6s| %-40s|n ", $2, $3, $4, $10, $11}'
dlaczego mi przesuwa gdzie jest blad

xis

  • Gość
Jak narysowac tabelke/ramke?
« Odpowiedź #17 dnia: 2005-05-30, 15:46:35 »
2005-05-30 14:34:08 bryla napisał:

> znalazlem problem i juz mi prawie dziala ale jest maly problem bo pierwsza linie mi dobrze
 > wyswietla natomiast cala reszte juz przesuwa o jeden znak cos w stylu
 > 10 15 123
 >  12 23 123
 >  12 24 153
 >  13 12 234
 > a skladnia wyglada tak
 > ps -aux | awk '{printf "|  %-7d|  %-6s|  %-5s|  %-6s| %-40s|n ", $2, $3, $4, $10,
 > $11}'
 > dlaczego mi przesuwa gdzie jest blad
 >

Bo to formatowanie tak działa, że tylko dopełnia spacjami, gdy wyraz jest za krótki. Jeśli jednak jest za długi to komórka się rozjeżdża. Spróbuj z np. '%10.10s'. To oznacza 'dokładnie 10 znaków' - jeśli wyraz będzie dłuższy, to zostanie przycięty.

bryla

  • Gość
Jak narysowac tabelke/ramke?
« Odpowiedź #18 dnia: 2005-05-30, 15:57:58 »
> Bo to formatowanie tak działa, że tylko dopełnia spacjami, gdy wyraz jest za krótki. Jeśli
 > jednak jest za długi to komórka się rozjeżdża. Spróbuj z np. '%10.10s'. To oznacza 'dokładnie
 > 10 znaków' - jeśli wyraz będzie dłuższy, to zostanie przycięty.
 >
Niestety nie pomoglo. obcinac obcina do 10 znakow ale dalej jest problem moze narysuje jak to wyglada mniej wiecej spacje tutaj usuwa wiec zamiast spacji uzyje podkreslenia _
|__abc__|__12__|__23__|
_|__adc__|__15__|__43__|
_|__adc__|__15__|__43__|
_|__adc__|__15__|__43__|

no i wlasnie wali spacje od drugiej lini i tak do samego konca .

xis

  • Gość
Jak narysowac tabelke/ramke?
« Odpowiedź #19 dnia: 2005-05-30, 16:21:32 »
O to chodzi :)
No więc zaznajomię Cię z jeszcze jednym 'magicznym' znakiem w formatowaniu.
Otóż 'n' oznacza 'przejdź do nowej linii. Printf wykonuje to polecenie, ale zauważ co robi później. Stawia spację! :)

Usuń spację między 'n' a cudzysłowiem i powinno być ok :)