Operacje na plikach tekstowych to jedne z najważniejszych czynności, które możemy wykonywać w systemie Linux. Jednym z częstych problemów, z którym możemy się spotkać, jest konieczność usunięcia pustych wierszy z pliku tekstowego. Oto kilka metod, za pomocą których możemy to zrobić.
Metoda 1: Użycie polecenia sed
sed to bardzo potężne narzędzie do przetwarzania tekstu w linii poleceń. Możesz użyć polecenia sed do usunięcia pustych wierszy w następujący sposób:
sed '/^$/d' input.txt > output.txt
W tym przypadku, /^$/ to wyrażenie regularne, które pasuje do pustych wierszy, a d to polecenie usunięcia. Plik input.txt to plik, z którego chcemy usunąć puste wiersze, a output.txt to plik wynikowy.
Wersja w miejscu
Jeżeli chcesz zachować zmiany w oryginalnym pliku, możesz użyć flagi -i:
sed -i '/^$/d' input.txt
Metoda 2: Użycie polecenia awk
awk to kolejne potężne narzędzie do przetwarzania tekstu. Polecenie to jest bardziej elastyczne i można je użyć w różnorodnych zastosowaniach. Oto jak usunąć puste wiersze z pliku tekstowego za pomocą awk:
awk 'NF' input.txt > output.txt
W tym przypadku, NF oznacza „Number of Fields” (liczbę pól w wierszu). awk 'NF' wybiera tylko te wiersze, które mają co najmniej jedno pole (czyli nie są puste).
Wersja w miejscu
Niestety, awk nie posiada wbudowanej opcji do edycji plików „w miejscu”, ale możesz osiągnąć to w inny sposób:
awk 'NF' input.txt > temp.txt && mv temp.txt input.txt
Metoda 3: Użycie polecenia grep
grep to kolejne narzędzie, które jest często używane do przeszukiwania tekstu. Możesz użyć grep do usunięcia pustych wierszy w pliku tekstowym w następujący sposób:
grep -v '^$' input.txt > output.txt
Tu używamy flagi -v, która inwertuje dopasowanie, to znaczy wybiera tylko te wiersze, które nie pasują do wzoru. Wyrażenie ^$ dopasowuje puste wiersze.
Wersja w miejscu
Podobnie jak w przypadku awk, grep nie posiada wbudowanej opcji do edycji plików „w miejscu”. Ale można osiągnąć to w inny sposób:
grep -v '^$' input.txt > temp.txt && mv temp.txt input.txt
Metoda 4: Użycie polecenia ex
Jeżeli jesteś użytkownikiem edytora Vim, być może zainteresuje Cię metoda wykorzystująca polecenie ex, które jest trybem komendowym Vima. Oto jak można to zrobić:
ex -s +%g/^$/d -cwq input.txt
W tej komendzie %g/^$/d to polecenie, które usunie wszystkie puste wiersze. Opcje -cwq zamykają edytor po wykonaniu operacji.
Te metody to tylko początek tego, co możesz zrobić z plikami tekstowymi w systemie Linux. Każda z nich ma swoje wady i zalety, ale wszystkie są skuteczne w usunięciu pustych wierszy z plików tekstowych. Możesz wybrać tę, która najlepiej pasuje do Twojego przypadku. Jeżeli jesteś zainteresowany dalszymi możliwościami tych narzędzi, warto zapoznać się z ich dokumentacją, gdzie znajdziesz wiele przykładów i opcji.
Metoda 5: Użycie polecenia perl
Perl to kolejny potężny język skryptowy, który oferuje różne metody manipulacji tekstem. Możesz użyć jednolinijkowego skryptu w Perl, aby usunąć puste wiersze z pliku:
perl -i -ne 'print if /\S/' input.txt
W tym przypadku, flaga -i oznacza edycję pliku „w miejscu”, a flaga -ne umożliwia przetwarzanie każdego wiersza pliku. Wyrażenie regularne \S dopasowuje się do każdego niebiałego znaku, dzięki czemu puste wiersze są pomijane.
Metoda 6: Użycie polecenia tr
Polecenie tr (translate) jest używane do zamiany lub usuwania znaków. Możemy je użyć w połączeniu z innymi poleceniami, jak awk czy sed, aby usunąć puste wiersze:
cat input.txt | tr -s '\n' '\n' > output.txt
Flaga -s (squeeze) zastępuje każdą sekwencję podanego znaku (w tym przypadku znaku nowej linii \n) pojedynczym wystąpieniem tego znaku.
Metoda 7: Użycie skryptu bashowego
Jeżeli nie chcesz polegać na jednolinijkowcach, możesz również napisać prosty skrypt w Bashu, który zrobi to za Ciebie:
while IFS= read -r line; do
if [[ "$line" != "" ]]; then
echo "$line"
fi
done < input.txt > output.txt
Ten skrypt odczytuje plik input.txt wiersz po wierszu i zapisuje niepuste wiersze do pliku output.txt.
Metoda 8: Użycie Pythona
Dla tych, którzy są zaznajomieni z Pythonem, możliwe jest również napisanie krótkiego skryptu, który usunie puste wiersze:
with open("input.txt", "r") as infile, open("output.txt", "w") as outfile:
for line in infile:
if line.strip():
outfile.write(line)
Skrypt ten odczytuje plik input.txt i zapisuje wszystkie niepuste wiersze do pliku output.txt.
Każda z tych metod ma swoje zastosowania i najlepiej jest wybrać tę, która najbardziej odpowiada Twoim potrzebom. Usuwanie pustych wierszy to tylko jedna z wielu operacji, które można wykonać na plikach tekstowych w systemie Linux. Opanowanie tych narzędzi z pewnością zwiększy Twoją produktywność i umożliwi efektywniejszą pracę z danymi tekstowymi.
Metoda 9: Użycie edytora tekstu Vim
Jeżeli jesteś zaznajomiony z edytorem tekstu Vim, możesz wykonać to zadanie manualnie w kilku prostych krokach:
- Otwórz plik w Vimie używając komendy:
vim input.txt. - Wprowadź tryb komendowy naciskając
:. - Wpisz komendę:
g/^$/di naciśnij Enter.
Takie podejście daje Ci pełną kontrolę nad edycją i pozwala na podgląd zmian w czasie rzeczywistym.
Metoda 10: Użycie edytora tekstu Nano
Nano to inny popularny edytor tekstu dostępny w systemach Linux. Aby usunąć puste wiersze w Nano, wykonaj poniższe kroki:
- Otwórz plik komendą
nano input.txt. - Użyj funkcji wyszukiwania, naciskając
Ctrl + W. - Wprowadź wyrażenie regularne dopasowujące puste wiersze, np.
^$. - Naciśnij
Enter, a następnieCtrl + Kaby usunąć znaleziony wiersz. - Powtórz kroki 3 i 4, aż usuniesz wszystkie puste wiersze.
W tym przypadku musisz wykonać operację dla każdego pustego wiersza, co może być czasochłonne dla dużych plików.
Metoda 11: Wykorzystanie kombinacji narzędzi
Niektóre zadania mogą wymagać kombinacji różnych narzędzi. Na przykład, możesz użyć awk do przefiltrowania pustych linii, a następnie sed do dodatkowego przetworzenia:
awk 'NF' input.txt | sed 's/foo/bar/g' > output.txt
W tym przypadku, awk 'NF' usuwa puste linie, a sed 's/foo/bar/g' zamienia wszystkie wystąpienia „foo” na „bar”.
Metoda 12: Użycie własnego skryptu w języku C
Jeśli masz doświadczenie w programowaniu w języku C, możesz również napisać własny program, który usunie puste wiersze z pliku. Dzięki temu masz pełną kontrolę nad algorytmem i możesz zaimplementować dodatkowe funkcje, jeżeli tego potrzebujesz.
Dlaczego warto znać różne metody?
Znajomość różnorodnych narzędzi i metod usunięcia pustych wierszy z pliku tekstowego w systemie Linux jest ważna, ponieważ różne narzędzia mogą być bardziej efektywne w różnych sytuacjach. Niektóre narzędzia lepiej nadają się do prostych zadań, podczas gdy inne są bardziej elastyczne i potężne, ale mogą być trudniejsze w użyciu.
Usunięcie pustych wierszy to tylko jedno z wielu zastosowań tych narzędzi. Możesz ich użyć do sortowania danych, zamiany tekstu, ekstrakcji informacji i wiele więcej. Dlatego warto znać kilka różnych podejść, aby móc wybrać to, które najlepiej pasuje do Twojego konkretnego przypadku.




![[Excel] Jak szybko usunąć puste wiersze z arkusza? keyboard-4532320_1280](https://porady-it.pl/wp-content/uploads/2023/10/keyboard-4532320_1280.jpg)

