Usuwanie znaków z sznurka w Bash

Usuwanie znaków z sznurka w Bash

Czasami może być konieczne usunięcie znaków z łańcucha. Bez względu na powód Linux zapewnia różne wbudowane, poręczne narzędzia, które pozwalają usunąć znaki z sznurka w Bash. Ten artykuł pokazuje, jak używać tych narzędzi do usuwania znaków z ciągu.

Artykuł obejmuje sposób wykonania następujących czynności:

  • Usuń znak z łańcucha za pomocą SED
  • Usuń znak z ciągu za pomocą AWK
  • Usuń znak z sznurka za pomocą cięcia
  • Usuń znak z łańcucha za pomocą TR

Polecenia pokazane w tym artykule zostały wykonane w Ubuntu 20.04 Focal Fossa. Te same polecenia można również wykonywać w innych rozkładach Linux, które mają dostępne powyższe narzędzia. Użyjemy domyślnej aplikacji terminalowej do uruchamiania poleceń. Możesz uzyskać dostęp do aplikacji terminalowej za pomocą skrótu klawiatury Ctrl+Alt+T.

Usuń znaki z łańcucha za pomocą SED

SED to potężne i poręczne narzędzie używane do edytowania strumieni tekstu. Jest to nieinteraktywny edytor tekstu, który umożliwia wykonywanie podstawowych manipulacji tekstowymi w strumieniach wejściowych. Możesz także użyć SED do usunięcia niechcianych znaków z strun.

Do celów demonstracyjnych użyjemy sznurka próbki, a następnie potrąślimy go do polecenia SED.

Usuń określony znak z łańcucha

Za pomocą SED możesz usunąć określony znak z łańcucha. Na przykład, aby usunąć „H” z ciągu „witam, jak się masz?„Poleceniem byłoby:

$ echo "Hello, jak się masz?„| sed 's/h //”

To usunie tylko pierwsze występowanie „H” w ciągu.

Aby usunąć wszystkie wystąpienia „H” z ciągu, użyj następującego polecenia:

$ echo "Hello, jak się masz?„| sed 's/h // g'

Gdzie G oznacza globalny. Usunie wszystkie wystąpienia „h” w ciągu.

Usuń pierwszy znak z łańcucha

Aby usunąć pierwszy znak z sznurka „witam, jak się masz?" Poleceniem byłoby:

$ echo "Hello, jak się masz?"| sed 's/^.// '

Gdzie (.) pasuje dokładnie do jednego znaku i (^) pasuje do dowolnego znaku na początku ciągu.

Usuń ostatni znak z łańcucha

Aby usunąć ostatni znak z ciągu „witam, jak się masz?" Poleceniem byłoby:

$ echo "Hello, jak się masz?"| sed 's/.$ // '

Gdzie (.) pasuje dokładnie do jednego znaku i ($) pasuje do dowolnego znaku na końcu ciągu.

Usuń pierwszy i ostatni znak z ciągu

Aby usunąć pierwszy i ostatni znak z ciągu „witam, jak się masz?" Poleceniem byłoby:

$ echo "Hello, jak się masz?"| sed 's/^.//;S/.$ // '

Usuń znaki z ciągu za pomocą AWK

AWK to potężny język skryptowy używany do dopasowywania wzorów, wraz z przetwarzaniem tekstu. AWK umożliwia filtrowanie i przekształcenie tekstu na różne sposoby. Możesz także użyć AWK do usuwania znaków z ciągów.

Do celów demonstracyjnych użyjemy sznurka przykładowego, a następnie przerzucimy go do polecenia AWK.

Usuń pierwszy znak z łańcucha

Aby usunąć pierwszy znak z sznurka „witam, jak się masz?" Poleceniem byłoby:

$ echo "Hello, jak się masz?"| AWK 'Print Substr (0 $, 2)' '

Gdzie (0 USD) to cały ciąg docelowy, a (2) jest pozycją początkową znaku. Powyższe polecenie usuwa pierwszy znak „H,„ Numer znaku ”1, i zwraca ciąg docelowy, począwszy od drugiego znaku,„ E.'

Usuń pierwsze dwa znaki z ciągu

Możesz także usunąć określoną liczbę znaków od początku ciągu. Na przykład, aby usunąć pierwsze dwa znaki z łańcucha „witam, jak się masz?" Poleceniem byłoby:

$ echo "Hello, jak się masz?"| AWK 'Print Substr (0 $, 3)' '

Powyższe polecenie usunie pierwsze dwa znaki: „on” lub numery znaków „1 i 2” i zwraca ciąg docelowy, zaczynając od numeru znaku „3” lub „L.'

Usuń ostatni znak z łańcucha

Usunąć ostatnią postać z „witam, jak się masz?" Poleceniem byłoby:

$ echo "Hello, jak się masz?"| AWK 'Print Substr (0 $, 1, długość (0 $) -1)' '

Gdzie długość (0 USD) -1 oznacza odejmowanie '1'z całkowitej długości znaku.

Powyższe polecenie wydrukuje ciąg, począwszy od numeru znaku '1' aż do długość (0 USD) -1 usunąć ostatnią postać.

Tam są '19„Znaki (w tym przestrzenie) w powyższym ciągu. Polecenie będzie działać, drukowając wszystkie znaki, zaczynając od postaci1„I do charakteru”18,„Usuwając ostatnią postać”19.'

Usuń ostatnie dwa znaki z ciągu

Aby usunąć dwa ostatnie postacie z „witam, jak się masz?„Poleceniem byłoby:

$ echo "Hello, jak się masz?"| AWK 'Print Substr (0 $, 1, długość (0 $) -2)' '

Gdzie długość (0 USD) -2 oznacza odejmowanie '2'z całkowitej długości znaku.

Powyższe polecenie wydrukuje ciąg, zaczynając od numeru znaku '1„I do numeru postaci”długość (0 USD) -2,„Aby usunąć dwa ostatnie znaki w ciągu.

Usuń zarówno pierwsze, jak i ostatnie znaki z ciągu

Aby usunąć zarówno pierwsze, jak i ostatnie znaki ze sznurka ”witam, jak się masz?" Poleceniem byłoby:

$ echo "Hello, jak się masz?"| AWK 'Print Substr (0 $, 2, długość (0 $) - 2)"

Gdzie długość (0 USD) -2 oznacza odejmowanie '2'z całkowitej długości znaku.

Powyższe polecenie wydrukuje ciąg, zaczynając od numeru znaku '2„Do numeru znaku”długość (0 USD) -2,„Aby usunąć pierwszą i ostatnią postać.

Usuń znak z sznurka za pomocą cięcia

Cut to narzędzie wiersza poleceń powszechnie używane do wyodrębnienia części tekstu z ciągu lub pliku i wydruku wyniku na standardowe wyjście. Możesz także użyć tego polecenia do usuwania znaków z ciągu.

Do celów demonstracyjnych użyjemy sznurka próbnego, a następnie przerzucimy go do polecenia cięcia.

Usuń pierwszy znak z łańcucha

Aby usunąć pierwszy znak z ciągu, „witam, jak się masz?" Poleceniem byłoby:

$ echo "Hello, jak się masz?"| Cut -c 2-

To polecenie wydrukuje ciąg, zaczynając od drugiego znaku, jednocześnie usuwając pierwszą postać.

Usuń pierwsze cztery znaki z ciągu

Aby usunąć pierwsze cztery znaki z ciągu „witam, jak się masz?" Poleceniem byłoby:

$ echo "Hello, jak się masz?"| Cut -c 5-

To polecenie wydrukuje ciąg, zaczynając od piątego znaku, jednocześnie usuwając pierwsze cztery znaki.

Wydrukuj ciąg między 2. a 5 znakami

Aby wydrukować ciąg „witam, jak się masz?" Między drugim i piątym znakiem, Poleceniem byłoby:

$ echo "Hello, jak się masz?"| CUT -C 2-5

To polecenie wydrukuje ciąg, zaczynając od drugiej postaci i do piątej postaci, jednocześnie usuwając pozostałe znaki początkowe i kończące.

Usuń ostatni znak z łańcucha

Aby usunąć ostatni znak z ciągu „witam, jak się masz?" Użyj cięcie polecenie z obrót silnika, następująco:

$ echo "Hello, jak się masz?"| rev | cut -c2- | rev

To polecenie działa, najpierw cofając sznurek, a następnie przecinanie pierwszego znaku, a na koniec odwrócenie go, aby dać pożądane wyjście.

Usuń ostatnie cztery znaki z ciągu

Aby usunąć cztery ostatnie postacie z linii „witam, jak się masz?" Poleceniem byłoby:

$ echo "Hello, jak się masz?"| rev | cut -c5- | rev

To polecenie działa, najpierw cofając sznurek, a następnie przecinając pierwsze cztery znaki, a następnie ponownie go odwrócić, aby dać pożądane wyjście.

Usuń pierwsze i ostatnie znaki z ciągu

Aby usunąć pierwsze i ostatnie znaki z łańcucha „witam, jak się masz?" Użyj cięcie polecenie z obrót silnika, następująco:

$ echo "Hello World!"| cut -c2- | rev | cut -c2- | rev

To polecenie działa poprzez wycięcie pierwszego znaku, a następnie odwrócenie sznurka i cięcie pierwszego znaku, a następnie odwrócenie go ponownie, aby dać pożądane wyjście.

Usuń znak z łańcucha za pomocą TR

Polecenie TR (skrót od tłumaczenia) jest używane do tłumaczenia, ściskającego i usuwania znaków z łańcucha. Możesz także użyć TR do usuwania znaków z łańcucha.

Do celów demonstracyjnych użyjemy sznurka przykładowego, a następnie przerzucimy go do polecenia TR.

Usuń wszystkie wystąpienia charakteru

Korzystając z polecenia TR, możesz usunąć wszystkie wystąpienia znaków małych lub wielkich z sznurka. Na przykład, aby usunąć wszystkie wystąpienia małej postaci „H” z ciągu, poleceniem byłoby:

$ echo "Hello, jak się masz?"| tr -d h

Podobnie, aby usunąć wszystkie wystąpienia znaku wielkiego „H” z ciągu, poleceniem byłoby:

$ echo "Hello, jak się masz?"| tr -d h

Możesz także użyć interpretowanych sekwencji, aby usunąć małe lub wielkie litery:

$ echo "Hello, jak się masz?"| tr -d [: Upper:]
$ echo "Hello, jak się masz?"| tr -d [: Lower:]

Usuń wszystkie wystąpienia znaków małych i wielkich

Możesz także usunąć wszystkie wystąpienia znaków zarówno małej, jak i wielki. Na przykład następujące polecenie usunie wszystkie wystąpienia postaci „h”, zarówno małej litery, jak i wielkie.

$ echo "Hello, jak się masz?"| tr -d 'hh'

Usuń wszystkie wystąpienia znaków w określonym zakresie

Aby usunąć wszystkie wystąpienia znaków z ciągu w określonym zakresie „D-H”, poleceniem byłoby:

$ echo "Hello, jak się masz?„| tr -d 'd -h'

To polecenie usunie wszystkie znaki w zakresie „d-h” (d, e, f, g, h) w ciągu.

Wniosek

W Linux zawsze będzie więcej niż jeden sposób na wykonanie prostej pracy. To samo dotyczy usuwania znaków z ciągu. Ten artykuł pokazał cztery różne sposoby, aby to zrobić, wraz z kilkoma przykładami usuwania niechcianych znaków z ciągu. Decydowanie, które narzędzie użyć wszystkich, zależy od twoich preferencji i, co ważniejsze, od tego, co chcesz osiągnąć.