Programowanie > Języki skryptowe
Kłopot z awk i wyrażeniami regularnymi
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
[#] Następna strona
Idź do wersji pełnej