bash - grepowanie i wypisywanie aktualnego czasu

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ć ?

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 }'
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.

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.

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