olllga.d Napisano Styczeń 13, 2010 Zgłoszenie Share Napisano Styczeń 13, 2010 Standardowo zawartość strumienia dopisuje wynik działania do pliku, na końcu. Czy można spowodować, aby najświeższy wynik był dopisywany od pierwszej linijki pliku? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
borzole Napisano Styczeń 13, 2010 Zgłoszenie Share Napisano Styczeń 13, 2010 Chyba nie ma na to prostego sposobu, ale: - dlaczego chcesz to zrobić? może wcale nie trzeba - można pokombinować i zrobić jakieś obejście w bash - można pokombinować i odwrócić kolejność linii w całym pliku: mój sposób: #!/bin/bash # reverse-file - odwraca kolejność linii w pliku # użycie: # reverse-file dane.log > rezultat.log INPUT="$1" for (( i =1; i <= $(wc -l < "$INPUT"); i++ )); do tail -n $i "$INPUT" | head -n 1 done inne metody w google --> [EDIT] usunąłem "$OUTPUT" w skrypcie, tak jest optymalniej Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
@WalDo Napisano Styczeń 13, 2010 Zgłoszenie Share Napisano Styczeń 13, 2010 1. link? → http://www.google.pl/linux?hl=pl&num=1...=Szukaj&lr= Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
olllga.d Napisano Styczeń 13, 2010 Autor Zgłoszenie Share Napisano Styczeń 13, 2010 Dziękuję za odpowiedzi! Każdego dnia tworzony jest raport w pliku txt. Kolejne dni są dopisywane na końcu pliku, odszukanie początku najświeższego raportu jest kłopotliwe i wymaga rolowania całej treści, nawet z kilku miesięcy. Najprościej byłoby zapisywać każdy raport w osobnych plikach, ale jeśli nie mogę przez kilka dni odczytywać raportu (np. urlop) to nie chce musieć otwierać każdego dnia po kolei, osobno. kombinuję z fopen Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
borzole Napisano Styczeń 13, 2010 Zgłoszenie Share Napisano Styczeń 13, 2010 Wyświetlanie końcówki pliku: man tail Warto też poznać "grep" "sed" "awk", bo jeśli logi mają jakiś stały wzór to wszystko z nich można wyciągnąć tymi prostymi narzędziami. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
olllga.d Napisano Styczeń 13, 2010 Autor Zgłoszenie Share Napisano Styczeń 13, 2010 tail wypisuje określoną liczbę linii, a raport każdego dnia ma inną wielkość i nie mogę wiedzieć od której linii zaczyna się dzisiejszy, a od której wczorajszy sedem, grepem czy awk oczywiście można by to uzyskać, ale za każdym razem musiałabym pisać co najmniej prosty skrypt by przejrzeć jeden dzień, a w sumie to przecież chodzi mi tylko o to, by zaoszczędzić czas i ułatwić sobie pracę Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
bunny1985 Napisano Styczeń 13, 2010 Zgłoszenie Share Napisano Styczeń 13, 2010 musiałabym pisać co najmniej prosty skrypt by przejrzeć jeden dzień Wystarczy ci jeden skrypt np. z datą, jako argumentem, który będzie wyświetlał linie od napotkania znacznika danego dnia, do napotkania znacznika kolejnego dnia. Sama napisałaś że sedem, grepem czy awk oczywiście można by to uzyskać więc nie widzę problemu. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
thof Napisano Styczeń 13, 2010 Zgłoszenie Share Napisano Styczeń 13, 2010 Najbardziej naturalne wydaje się po prostu przepisywanie zawartości pliku z archiwalnymi raportami do jakiejś zmiennej (lub innego pliku) i potem nadpisanie nowym raportem pliku raport > plik.txt i na końcu dopisanie zawartości zmiennej (lub utworzonej kopii pliku) $zmienna >> plik.txt. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
borzole Napisano Styczeń 13, 2010 Zgłoszenie Share Napisano Styczeń 13, 2010 O widzisz, thof dobrze mówi. Wystarczy, że wrzucisz do cron mv /var/my.log /var/my_$(date +%Y.%m.%d-%H.%M).log i będzie ładnie pociapane Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się