bash - grepowanie i wypisywanie aktualnego czasu

Odpowiedz Nowy wątek
2015-02-11 09:23
Wielki Pomidor
0

W konsoli (UBuntu 14.04 LTS) uruchamiam program, który wypisuje co jakiś czas pewne informacje. W przypadku kiedy chcę aby wypisywane były tylko informacje pasujące do określonego wzorca mogę użyć komendy:

programName -param param1 | grep someOutput

Aby dołączyć do każdej lini wypisanej przez program czas mogę użyć komendy:

programName -param param1 | awk '{ print strftime("%Y-%m-%d %H:%M:%S"), $0; fflush(); }'

Połączenie powyższych komend:

programName -param param1 | grep someOutput | awk '{ print strftime("%Y-%m-%d %H:%M:%S"), $0; fflush(); }'

sprawia, że na konsoli nic nie jest wypisywane. Dlaczego tak się dzieje ? Jak to naprawić ?

edytowany 1x, ostatnio: hauleth, 2016-12-13 18:26

Pozostało 580 znaków

2015-02-11 12:53
1

Podaj przykład kiedy nie działa (dokładny) bo mi działa. Dodatkowo nie wiem czemu ludzie tak bardzo upierają się przy łączeniu grepa i AWK, skoro to jest duplikowanie procesów:

programName -param param1 | awk '/regex/ { print strftime("%Y-%m-%d %H:%M:%S"), $0 }'

Robi dokładnie to samo co:

programName -param param1 | grep regex | awk '{ print strftime("%Y-%m-%d %H:%M:%S"), $0 }'
edytowany 2x, ostatnio: hauleth, 2015-02-11 12:54

Pozostało 580 znaków

2015-02-11 19:04
Wielki Pomidor
0

Odpal jakieś okno, np. przeglądarkę. Sprawdź jego id: wmctrl -l Potem wykonaj komendę:
xev -id windowid | grep FocusIn | awk '{ print strftime("%Y-%m-%d %H:%M:%S"), $0 }'

Xev to debugger X11, powinien wypisać zdarzenie fokusu, jak klikniesz w wybrane okno.

Pozostało 580 znaków

2015-02-13 15:58
0

Problem polega na tym chyba (nie chce mi się tego tak testować), że xev nie kończy pracy w odpowiedni sposób. Bądź co bądź wersja:

xev -id windowid |  awk '/FocusIn/ { print strftime("%Y-%m-%d %H:%M:%S"), $0 }'

Działa bez zarzutu.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0