Programowanie BASH

Usuwanie znaków z ciągu w Bash

Usuwanie znaków z ciągu w Bash

Czasami może być konieczne usunięcie znaków z ciągu. Bez względu na powód, Linux zapewnia różne wbudowane, przydatne narzędzia, które pozwalają usuwać znaki z ciągu w Bash. W tym artykule pokazano, jak używać tych narzędzi do usuwania znaków z ciągu from.

W artykule opisano, jak wykonać następujące czynności:

Polecenia przedstawione w tym artykule zostały wykonane w Ubuntu 20.04 Ogniskowa Fossa. Te same polecenia można również wykonać w innych dystrybucjach Linuksa, w których dostępne są powyższe narzędzia. Do uruchamiania poleceń użyjemy domyślnej aplikacji Terminal. Możesz uzyskać dostęp do aplikacji Terminal za pomocą skrótu klawiaturowego Ctrl+Alt+T.

Usuń znaki z ciągu za pomocą sed

Sed to potężne i poręczne narzędzie służące do edycji strumieni tekstu. Jest to nieinteraktywny edytor tekstu, który umożliwia wykonywanie podstawowych manipulacji tekstem na strumieniach wejściowych. Możesz również użyć sed, aby usunąć niechciane znaki z ciągów.

W celach demonstracyjnych użyjemy przykładowego ciągu, a następnie prześlemy go do polecenia sed.

Usuń określony znak z ciągu

Korzystając z sed, możesz usunąć określony znak z ciągu. Na przykład, aby usunąć „h” z ciągu „cześć, jak się masz?” polecenie byłoby:

$ echo "cześć, jak się masz??" | sed 's/h//'

Spowoduje to usunięcie tylko pierwszego wystąpienia „h” w łańcuchu.

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

$ echo "cześć, jak się masz??" | sed 's/h//g'

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

Usuń pierwszy znak z ciągu

Aby usunąć pierwszy znak z ciągu „cześć, jak się masz?” polecenie byłoby:

$ echo "cześć, jak się masz??" | sed's/^.//' plik

Gdzie (.) dopasowuje dokładnie jeden znak, a (^) dopasowuje dowolny znak na początku łańcucha.

Usuń ostatni znak z ciągu

Aby usunąć ostatni znak z ciągu „cześć, jak się masz?” polecenie byłoby:

$ echo "cześć, jak się masz??" | sed /.$//'

Gdzie (.) dopasowuje dokładnie jeden znak, a ($) dopasowuje dowolny znak na końcu ciągu.

Usuń pierwszy i ostatni znak z ciągu

Aby usunąć pierwszy i ostatni znak z ciągu „cześć, jak się masz?” polecenie byłoby:

$ echo "cześć, 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 wzorców wraz z przetwarzaniem tekstu. Awk pozwala filtrować i przekształcać tekst na różne sposoby. Możesz także użyć awk do usunięcia znaków z łańcuchów.

W celach demonstracyjnych użyjemy przykładowego ciągu, a następnie przekierujemy go do polecenia awk.

Usuń pierwszy znak z ciągu

Aby usunąć pierwszy znak z ciągu „cześć, jak się masz?” polecenie byłoby:

$ echo "cześć, jak się masz??" | awk ' print substr( $0, 2 ) '

Gdzie ($0) to cały docelowy ciąg znaków, a (2) to pozycja początkowa znaku. Powyższe polecenie usuwa pierwszy znak „h”, znak numer „1” i zwraca ciąg docelowy zaczynający się od drugiego znaku „e.'

Usuń pierwsze dwa znaki z ciągu

Możesz także usunąć określoną liczbę znaków z początku ciągu. Na przykład, aby usunąć pierwsze dwa znaki z ciągu „cześć, jak się masz?” polecenie byłoby:

$ echo "cześć, jak się masz??" | awk ' print substr ($0, 3 ) '

Powyższe polecenie usunie pierwsze dwa znaki „he” lub znaki o numerach „1 i 2” i zwróci docelowy ciąg rozpoczynający się od znaku o numerze „3” lub „l.'

Usuń ostatni znak z ciągu

Aby usunąć ostatni znak z „cześć, jak się masz?” polecenie byłoby:

$ echo "cześć, jak się masz??" | awk ' print substr( $0, 1, length($0)-1 ) '

Gdzie długość (0 USD)-1 oznacza odliczenie '1' od całkowitej długości znaków.

Powyższe polecenie wypisze ciąg rozpoczynający się od znaku numer '1'do długość (0 USD)-1 usunąć ostatni znak.

Tam są '19' znaki (włącznie ze spacjami) w powyższym ciągu. Polecenie zadziała, drukując wszystkie znaki, zaczynając od znaku '1' i do znaku '18,' usuwając ostatni znak '19.'

Usuń ostatnie dwa znaki z ciągu

Aby usunąć ostatnie dwa znaki z „cześć, jak się masz?” polecenie byłoby:

$ echo "cześć, jak się masz??" | awk ' print substr( $0, 1, length($0)-2 ) '

Gdzie długość (0 USD)-2 oznacza odliczenie '2' od całkowitej długości znaków.

Powyższe polecenie wypisze ciąg rozpoczynający się od znaku numer '1' i do liczby znaków 'długość (0 USD)-2,' aby usunąć ostatnie dwa znaki z ciągu.

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

Aby usunąć zarówno pierwszy, jak i ostatni znak z ciągu „cześć, jak się masz?” polecenie byłoby:

$ echo "cześć, jak się masz??" | awk 'print substr($0, 2, length($0) - 2)'

Gdzie długość (0 USD)-2 oznacza odliczenie '2' od całkowitej długości znaków.

Powyższe polecenie wypisze ciąg rozpoczynający się od znaku numer '2' do liczby znaków 'długość (0 USD)-2,' aby usunąć pierwszy i ostatni znak.

Usuń znak z ciągu za pomocą cięcia

Wytnij to narzędzie wiersza poleceń powszechnie używane do wyodrębniania części tekstu z ciągu znaków lub pliku i drukowania wyniku na standardowe wyjście. Możesz również użyć tego polecenia do usuwania znaków z ciągu.

W celach demonstracyjnych użyjemy przykładowego ciągu, a następnie prześlemy go do polecenia cut.

Usuń pierwszy znak z ciągu

Aby usunąć pierwszy znak z ciągu, „cześć, jak się masz?” polecenie byłoby:

$ echo "cześć, jak się masz??" | cięcie -c 2-

To polecenie wypisze ciąg, zaczynając od drugiego znaku, usuwając pierwszy znak.

Usuń pierwsze cztery znaki z ciągu

Aby usunąć pierwsze cztery znaki z ciągu „cześć, jak się masz?” polecenie byłoby:

$ echo "cześć, jak się masz??" | cięcie -c 5-

To polecenie wypisze ciąg, zaczynając od piątego znaku, usuwając pierwsze cztery znaki.

Drukuj ciąg od 2 do 5 znaków

Aby wydrukować ciąg „cześć, jak się masz?” między drugim a piątym znakiem, polecenie byłoby:

$ echo "cześć, jak się masz??" | cięcie -c 2-5

To polecenie wypisze ciąg, zaczynając od drugiego znaku do piątego znaku, usuwając pozostałe znaki początku i końca.

Usuń ostatni znak z ciągu

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

$ echo "cześć, jak się masz??" | rev | cut -c2- | rev

To polecenie działa najpierw odwracając ciąg, następnie wycinając pierwszy znak, a na końcu odwracając go ponownie, aby uzyskać pożądany wynik.

Usuń ostatnie cztery znaki z ciągu

Aby usunąć ostatnie cztery znaki z wiersza „cześć, jak się masz?” polecenie byłoby:

$ echo "cześć, jak się masz??" | rev | cut -c5- | rev

To polecenie działa najpierw odwracając ciąg, a następnie wycinając pierwsze cztery znaki, a następnie odwracając go ponownie, aby uzyskać pożądany wynik.

Usuń pierwsze i ostatnie znaki z ciągu

Aby usunąć pierwszy i ostatni znak z ciągu „cześć, jak się masz?” Użyj skaleczenie polecenie z obrót silnika, następująco:

$ echo "witaj świecie!" | cięcie -c2- | obr | cięcie -c2- |obrót

To polecenie działa poprzez wycięcie pierwszego znaku, a następnie odwrócenie ciągu i wycięcie jego pierwszego znaku, a następnie ponowne odwrócenie, aby uzyskać żądane wyjście.

Usuń znak z ciągu za pomocą tr

Polecenie tr (skrót od translate) służy do tłumaczenia, ściskania i usuwania znaków z łańcucha. Możesz także użyć tr, aby usunąć znaki z łańcucha.

W celach demonstracyjnych użyjemy przykładowego ciągu, a następnie przekierujemy go do polecenia tr.

Usuń wszystkie wystąpienia postaci

Używając tr polecenie, możesz usunąć wszystkie wystąpienia małych lub wielkich liter ze swojego ciągu. Na przykład, aby usunąć wszystkie wystąpienia małej litery „h” z ciągu, polecenie powinno wyglądać tak:

$ echo "Cześć, jak się masz??" | tr -d h

Podobnie, aby usunąć wszystkie wystąpienia wielkiej litery „H” z ciągu, polecenie powinno wyglądać tak:

$ echo "Cześć, jak się masz??" | tr -d H

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

$ echo "Cześć, jak się masz??"| tr -d [:górny:]

$ echo "WITAJCIE, jak się masz??"| tr -d [:niższy:]

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

Możesz także usunąć z ciągu wszystkie wystąpienia zarówno małych, jak i wielkich liter. Na przykład poniższe polecenie usunie wszystkie wystąpienia znaku „h”, zarówno małych, jak i wielkich liter.

$ echo "Cześć, 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”, polecenie powinno wyglądać tak:

$ echo "cześć, jak się masz??" | tr -d 'd-h'

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

Wniosek

W Linuksie zawsze będzie więcej niż jeden sposób na wykonanie prostej pracy. To samo dotyczy usuwania znaków z łańcucha. W tym artykule pokazano cztery różne sposoby, aby to zrobić, wraz z kilkoma przykładami usuwania niechcianych znaków z ciągu. Decyzja, którego narzędzia użyć, zależy od Twoich preferencji i, co ważniejsze, od tego, co chcesz osiągnąć.

Control & manage mouse movement between multiple monitors in Windows 10
Dual Display Mouse Manager lets you control & configure mouse movement between multiple monitors, by slowing down its movements near the border. Windo...
WinMouse lets you customize & improve mouse pointer movement on Windows PC
If you want to improve the default functions of your mouse pointer use freeware WinMouse. It adds more features to help you get the most out of your h...
Mouse left-click button not working on Windows 10
If you are using a dedicated mouse with your laptop, or desktop computer but the mouse left-click button is not working on Windows 10/8/7 for some rea...