Jeśli mówimy o wiodących białychprze, są one stosunkowo łatwe do zauważenia, ponieważ są na początku tekstu. Jednak nie jest łatwo dostrzec ciągłe białe listy. To samo dotyczy podwójnych przestrzeni, które czasami są trudne do wykrycia. Wszystko staje się trudniejsze, gdy trzeba usunąć wszystkie te wiodące i trapujące białe listy z dokumentu zawierającego tysiące linii.
Aby usunąć białe listy z dokumentu, możesz użyć różnych narzędzi, takich jak AWK, SED, CUT i TR. W niektórych innych artykułach omówiliśmy zastosowanie AWK w usuwaniu białychpaków. W tym artykule będziemy omawiać zastosowanie SED do usuwania białej listy z danych.
Nauczysz się, jak używać SED:
Będziemy uruchamiać polecenia na Ubuntu 20.04 Focal Fossa. Możesz także uruchomić te same polecenia w innych rozkładach Linux. Użyjemy domyślnej aplikacji terminali Ubuntu do uruchamiania poleceń. Aby otworzyć terminal, użyj skrótu klawiatury Ctrl+Alt+T.
Co jest sed
SED (oznacza edytor strumienia) to bardzo potężne i poręczne narzędzie w Linux, które pozwala nam wykonywać podstawowe manipulacje tekstami w strumieniach wejściowych. To nie jest edytor tekstu, ale pomaga manipulować i filtrować tekst. Otrzymuje strumienie wejściowe i edytuje je zgodnie z instrukcjami użytkownika, a następnie drukuje przekształcony tekst na ekran.
Z SED możesz:
Używając SED do usuwania białej listy
Użyjemy następującej składni do usuwania białej listy z tekstu:
S /Regexp /Flagi /Flagi
Gdzie
Wyrażenia regularne
Niektóre z wyrażeń regularnych, których tutaj użyjemy, to:
Do celów demonstracyjnych użyjemy następującego przykładowego pliku o nazwie „TestFile”.
Zobacz wszystkie białe listy w pliku
Aby znaleźć wszystkie białe listy w pliku, wyprzyj wyjście polecenia CAT do polecenia TR w ten sposób:
$ CAT TestFile | Tr "" "*" | tr „\ t” „&”
To polecenie zastępuje wszystkie białe listy w pliku symbol (*), co ułatwia dostrzeganie wszystkich białych lis.
Na poniższym zrzucie ekranu widać, że białe listy są zastąpione * symbolem.
Usuń wszystkie białe listy (w tym przestrzenie i zakładki)
W niektórych przypadkach musisz usunąć wszystkie białe listy z danych, i.mi. prowadzenie, podążanie i białe listy między tekstami. Poniższe polecenie usunie wszystkie białe listy z „testu testowego”.
$ CAT TestFile | sed -r 's/\ s+// g'
Notatka: SED nie zmienia plików, chyba że zapisujesz wyjście na pliku.
Wyjście:
Po uruchomieniu powyższego polecenia pojawiło się następujące dane wyjściowe, które pokazuje, że wszystkie białe listy zostały usunięte z tekstu.
Możesz także użyć następującego polecenia, aby sprawdzić, czy wszystkie białe listy zostały usunięte.
$ CAT TestFile | sed -r 's/\ s+// g' | Tr "" "*" | tr „\ t” „&”
Ze wyjścia widać, że nie jest to (*) symbol, co oznacza, że wszystkie białe listy zostały usunięte.
Aby usunąć wszystkie białe listy, ale tylko z określonego wiersza (powiedzmy wiersz nr 2), możesz użyć następującego polecenia:
$ CAT TestFile | sed -r '2s/\ s+// g'
Usuń wszystkie wiodące białe listy (w tym przestrzenie i zakładki)
Aby usunąć wszystkie białe listy od początku każdego wiersza (wiodące białe listy), użyj następującego polecenia:
$ CAT TestFile | sed 's/^[\ t]*//'
Wyjście:
Po uruchomieniu powyższego polecenia pojawiło się następujące dane wyjściowe, które pokazuje, że wszystkie wiodące białe listy zostały usunięte z tekstu.
Możesz także użyć następującego polecenia, aby sprawdzić, czy wszystkie wiodące białe listy zostały usunięte:
$ CAT TestFile | sed 's/^[\ t]*//' | Tr "" "*" | tr „\ t” „&”
Ze wyjścia widać, że na początku linii nie ma (*) symbolu.
Aby usunąć wiodące białe listy z określonego wiersza (powiedzmy wiersz numer 2), możesz użyć następującego polecenia:
$ CAT TestFile | sed '2s/^[\ t]*//'
Usuń wszystkie występy białych (w tym przestrzenie i zakładki)
Aby usunąć wszystkie białe listy z końca każdej linii (spacery z białej), użyj następującego polecenia:
$ CAT TestFile | sed 's/[\ t]*$ //'
Wyjście:
Po uruchomieniu powyższego polecenia pojawiło się następujące dane wyjściowe, które pokazuje, że wszystkie ciągłe białe listy zostały usunięte z tekstu.
Możesz także użyć następującego polecenia, aby sprawdzić, czy wszystkie białe listy zostały usunięte.
$ CAT TestFile | sed 's/[\ t]*$ //' | Tr "" "*" | tr „\ t” „&”
Ze wyjścia widać, że na końcu linii nie ma (*) symbolu.
Aby usunąć białe listy złożone z określonego wiersza (powiedzmy wiersz numer 2), możesz użyć następującego polecenia:
$ CAT TestFile | sed '2s/[\ t]*$ //'
Usuń zarówno białe, jak i spacery
Aby usunąć wszystkie białe listy zarówno z początku, jak i na końcu każdej linii (i.mi. Zarówno wiodące, jak i spustowe białe listy), użyj następującego polecenia:
$ CAT TestFile | sed 's/^[\ t]*//; s/[\ t]*$ //'
Wyjście:
Po uruchomieniu powyższego polecenia pojawiło się następujące dane wyjściowe, które pokazuje, że zarówno białe listy wiodące, jak i spóźnione zostały usunięte z tekstu.
Możesz także użyć następującego polecenia, aby sprawdzić, czy zarówno wiodące, jak i tulokowane białe losy zostały usunięte.
$ CAT TestFile | sed 's/^[\ t]*//; s/[\ t]*$ //' | Tr "" "*" | tr „\ t” „&”
Ze wyjścia widać, że nie ma (*) symbolu na początku lub na końcu linii, które weryfikują, że wszystkie wiodą.
Aby usunąć zarówno wiodące, jak i spustowe białe linie z określonego wiersza (powiedzmy wiersz numer 2), możesz użyć następującego polecenia:
$ CAT TestFile | sed '2s/^[\ t]*//; 2s/[\ t]*$ //'
Wymień wiele białych losów na pojedynczy biała
W niektórych przypadkach w pliku znajduje się wiele białej listu, ale potrzebujesz tylko pojedynczego białego. Możesz to zrobić, zastępując te wiele przestrzeni jedną przestrzenią za pomocą SED.
Poniższe polecenie zastąpi wszystkie wielokrotne białe listy na pojedynczą białą białoł z każdego wiersza w „TestFile”.
$ CAT TestFile | sed 's/[] \+//g'
Wyjście:
Po uruchomieniu powyższego polecenia pojawiło się następujące dane wyjściowe, które pokazuje, że wiele białychpaków zostało zastąpionych pojedynczym białym.
Możesz także użyć następującego polecenia, aby sprawdzić, czy wiele białych rozpowszechnianych jest zastąpionych pojedynczą białą białą:
$ CAT TestFile | sed 's/[] \+//g' | Tr "" "*" | tr „\ t” „&”
Ze wyjścia można zobaczyć pojedynczy (*) symbol w każdym miejscu, który weryfikuje, że wszystkie wystąpienia wielu białychprze są zastąpione pojedynczym białym.
Chodziło więc o usunięcie białych danych z danych za pomocą SED. W tym artykule nauczyłeś się, jak używać SED do usunięcia wszystkich białej listu z danych, usuwania tylko wiodących lub trasy białej i usuwania białej białej i spaceru. Nauczyłeś się również zastąpić wiele przestrzeni na jedną przestrzeń. Teraz będzie łatwo usunąć białe linie z pliku zawierającego setki lub tysiące linii.