SED Usuń Whitespace

SED Usuń Whitespace
Usunięcie białej listy w dokumentach jest niezbędnym krokiem do formatowania, który jest wymagany do poprawy ogólnego układu tekstu i upewnienia się, że dane są czyste i uporządkowane. Pomaga przechowywać tylko wymagane dane i pozbyć się niepotrzebnych przestrzeni prowadzących i końcowych. Poniżej znajdują się scenariusze, w których może być konieczne usunięcie białej listy:
  • Do sformatowania kodu źródłowego
  • Do czyszczenia danych
  • W celu uproszczenia wyjścia wiersza polecenia

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:

  • Usuń wszystkie białe przestrzenie
  • Usuń wiodące białe listy
  • Usuń białe listy
  • Usuń zarówno białe, jak i spacery
  • Wymień wiele przestrzeni na pojedynczą przestrzeń

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:

  • Wybierz tekst
  • Wyszukaj tekst
  • Wstaw tekst
  • Wymień tekst
  • Usuń tekst

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

  • S/: Jest Wyrażenie zastępcze
  • Regexp: jest wyrażeniem regularnym do dopasowania
  • wymiana: to ciąg zastępczy
  • flagi: Użyjemy tylko flagi „g”, aby umożliwić substytucję globalnie na każdej linii

Wyrażenia regularne

Niektóre z wyrażeń regularnych, których tutaj użyjemy, to:

  • ^ dopasowuje początek linii
  • $ mecze koniec linii
  • + pasuje do jednego lub więcej wystąpień poprzedniego charakteru
  • * pasuje do zera lub więcej wystąpień poprzedniego charakteru.

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.