Programowanie > Języki skryptowe

Kłopot z awk i wyrażeniami regularnymi

(1/3) > >>

bryla:
Witam
Potrzebuje narysowac tabelke tak zeby wyniki przezentowane byly wyrazniejsze i latwiejsze w uzyciu. Uzywam czegos takiego
ps - aux user | awk \\'{print \\"|   \\" $3 \\"  |\\" $4 \\"  |\\"}\\'
ale takie roziwazanie jest dobre gdyz tabelka sie przestawia w zaleznosci od ilosc znakow w lini i linia ktora ma oddzielac kolumny od siebie wariuje i nie wychodzi prosto bo przykladowo jak sa 3 znaki to jest ok ale jak sa juz 4 lub 2 znaki no to linia sie przesuwa :( jak to mozna napisac by bylo poprawnie. Z gory dziekuje za odpowiedz

kazikcz:
Hmm w sumie to możnaby to spróbować obejść troche prymitywną myślę metodą, a dokładniej chodzi mi o znak specjalny przesunięcia kursora do danej kolumny w wierszu:
echo -e 033[${numer_kolumny}Gjakis_tekst
np.
echo -e 033[40Gjakis_tekst

W przypadku awka usuwasz jednego backslasha czyli uzywasz 033[${numer_kolumney}G.


ps -aux | awk \\'{print \\"| \\" $3 \\"033[10G|033[15G\\" $4 \\" |\\"}\\'
Na bazie tego myślę że zdołasz zbudować sobie odpowiednią dla siebie tabelke ;)

Powodzenia! :)

bryla:
dzieki wielkie sproboje pokombinowac w niedziel:)

bryla:
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

xis:
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\\').

Nawigacja

[0] Indeks wiadomości

[#] Następna strona

Idź do wersji pełnej