Kiedy używamy komendy sort file
, plik pokazuje jej zawartość w posortowany sposób, co jeśli nie chcę uzyskać żadnego rodzaju danych wyjściowych, ale plik posortowany?Jak sortować plik w miejscu?
Odpowiedz
można użyć pliku przekierowanie do przekierowany posortowanych wyjściowe:
sort input-file > output_file
Albo można użyć -o opcja sortowania, aby wskazać ten sam plik wejściowy i wyjściowy:
sort file -o file
Uwaga: Częstym błędem jest próba przekierować dane wyjściowe do tego samego pliku wejściowego (np sort file > file
). To nie działa, ponieważ powłoka wykonuje przekierowania (a nie program sort (1)), a plik wejściowy (jako wynik również) zostanie usunięty tuż przed przyznaniem programowi sort (1) sort (1) czytając to.
Dobra uwaga na powszechny błąd – Drakes
To naprawdę przydaje się, gdy musisz ręcznie edytować słowniki dla LaTeX, +1 –
Wystarczy wspomnieć o ważności zamówienia. Od 'stronach GNU sort': ' -o plik-wyj ' '--output = plik-wyj' dokąd zapisać plik-wyj zamiast standardowego wyjścia. W nowszych systemach, '-o 'nie może pojawić się po pliku wejściowym, jeśli ustawiono' POSIXLY_CORRECT', np. 'Sort F -o F '. Przenośne skrypty powinny określać '-o OUTPUT-FILE 'przed jakimikolwiek plikami wejściowymi. –
Polecenie sort
domyślnie drukuje wynik operacji sortowania na standardowe wyjście. W celu osiągnięcia „w miejscu” rodzaj, można to zrobić:
sort -o file file
ta nadpisuje wejście file
z wyjściem sortowane. Przełącznik -o
, używany do określenia wyjścia, is defined by POSIX, więc powinny być dostępne dla wszystkich wersji sort
:
-o Określ nazwę pliku wyjściowego być stosowany zamiast standardowego wyjścia. Ten plik może być taki sam, jak jeden z plików wejściowych.
Jeśli jesteś na tyle niefortunne mieć wersję sort
bez przełącznika -o
(Luis zapewnia mnie, że istnieje), można osiągnąć „w miejscu” Edytuj w standardowy sposób:
sort file > tmp && mv tmp file
Nie, mogą być niedostępne w wersjach sortowania nie zgodnych z POSIX (jest ich kilka) Jeśli chcesz posortować ten sam plik, po prostu wykonaj polecenie 'sort filea> fileb; mv -f fileb filea'. –
Proszę zaktualizować pytanie, aby wyraźnie powiedzieć, co chcesz zrobić z wynikiem sortowania pliku. Czy chcesz go posortować, zastępując nieposortowaną zawartość 'pliku' posortowaną zawartością tego samego pliku? Sposób, w jaki obecnie zadawane jest twoje pytanie, nie robi nic, jest poprawną odpowiedzią (nie chcesz żadnego wyjścia, więc nic nie rób). –
@KeithThompson dziękuję za troskę, próbowałem posortować plik, ale chcę uniknąć wyjścia na ekranie. –
Więc gdzie chcesz wyjść? Do nowego pliku? Do oryginalnego pliku? Do drukarki w hali? –