Премахване на знаци от низ в Bash

Removing Characters From String Bash



Понякога може да се наложи да премахнете знаци от низ. Каквато и да е причината, Linux ви предоставя различни вградени, удобни инструменти, които ви позволяват да премахвате знаци от низ в Bash. Тази статия ви показва как да използвате тези инструменти за премахване на знаци от низ.

Статията описва как да направите следното:







  • Премахване на знак от низ чрез sed
  • Премахване на знак от низ чрез awk
  • Премахнете знака от низ с помощта на cut
  • Премахване на знак от низ чрез tr

Командите, показани в тази статия, са изпълнени в Ubuntu 20.04 Focal Fossa. Същите команди могат да се изпълняват и в други дистрибуции на Linux, които имат налични горепосочени инструменти. Ще използваме терминалното приложение по подразбиране, за да изпълняваме командите. Можете да получите достъп до приложението Terminal с помощта на клавишната комбинация Ctrl+Alt+T.



Премахнете знаците от низа с помощта на sed

Sed е мощна и удобна помощна програма, използвана за редактиране на потоци от текст. Това е неинтерактивен текстов редактор, който ви позволява да извършвате основни текстови манипулации при входни потоци. Можете също да използвате sed за премахване на нежелани знаци от низове.



За демонстрационни цели ще използваме примерен низ и след това ще го изпратим до командата sed.





Премахване на конкретен знак от низ

Използвайки sed, можете да премахнете конкретен знак от низ. Например, за да премахнете h от низ Здравей, как си? командата ще бъде:

$изхвърлен 'Здравей, как си?' | sed 's/h //'

Това ще премахне само първото появяване на „h“ в низа.
Премахване на конкретен знак от низ1
За да премахнете всички появявания на „h“ от низ, използвайте следната команда:



$изхвърлен 'Здравей, как си?' | sed 's/h // g'

Където g означава глобално. Той ще премахне всички появявания на „h“ в низа.
Премахване на конкретен знак от String2

Премахване на първия знак от низ

За да премахнете първия знак от низ Здравей, как си? командата ще бъде:

$изхвърлен 'Здравей, как си?' | sed 's /^.//' файл

Където (.) Съвпада точно с един знак и (^) съответства на всеки знак в началото на низа.
Премахване на първия знак от низ

Премахване на последния знак от низ

За да премахнете последния знак от низ Здравей, как си? командата ще бъде:

$изхвърлен 'Здравей, как си?' | sed 's /.$//'

Където ( . ) съвпада точно с един знак и ($) съответства на всеки знак в края на низа.
Премахване на последния знак от низ

Премахнете първия и последния знак от низ

За да премахнете първия и последния знак от низ Здравей, как си? командата ще бъде:

$изхвърлен 'Здравей, как си?' | sed 's /^.//; s /.$//'

Премахнете първия и последния знак от низ

Премахване на символи от низ чрез awk

Awk е мощен скриптов език, използван за съвпадение на шаблони, заедно с обработка на текст. Awk ви позволява да филтрирате и трансформирате текст по различни начини. Можете също да използвате awk за премахване на знаци от низове.

За демонстрационни цели ще използваме примерен низ и след това го изпращаме към командата awk.

Премахване на първия знак от низ

За да премахнете първия знак от низ Здравей, как си? командата ще бъде:

$изхвърлен 'Здравей, как си?' | awk '{print substr ($ 0, 2)}'

Където ($ 0) е целият низ и (2) е началната позиция на знака. Горната команда премахва първия знак „h“, номер на знак „1“ и връща целевия низ, започващ с втория знак „e“.
Премахване на първия знак от низ

Премахнете първите два знака от низ

Можете също така да премахнете определен брой знаци от началото на низ. Например, за да премахнете първите два знака от низ Здравей, как си? командата ще бъде:

$изхвърлен 'Здравей, как си?' | awk '{print substr ($ 0, 3)}'

Горната команда ще премахне първите два знака, „той“ или номера на знаци „1 и 2“, и ще върне целевия низ, започващ с номер на знак „3“ или „l“.
Премахнете първите два знака от низ

Премахване на последния знак от низ

За да премахнете последния знак от Здравей, как си? командата ще бъде:

$изхвърлен 'Здравей, как си?' | awk '{print substr ($ 0, 1, length ($ 0) -1)}'

Където дължина ($ 0) -1 означава приспадане ' 1 “От общата дължина на знака.

Горната команда ще отпечата низа, започващ с номер на знак „ 1 ' до дължина ($ 0) -1 за изтриване на последния знак.

Има ' 19 “(Включително интервали) в горния низ. Командата ще работи чрез отпечатване на всички знаци, започвайки с символ „ 1 'И до характер' 18 , 'Докато премахвате последния знак' 19 . '

rmv последен char frm низ

Премахване на последните два знака от низ

За да премахнете последните два знака от Здравей, как си? командата ще бъде:

$изхвърлен 'Здравей, как си?' | awk '{print substr ($ 0, 1, length ($ 0) -2)}')

Където дължина ($ 0) -2 означава приспадане ' 2 “От общата дължина на знака.

Горната команда ще отпечата низа, започвайки с номер на знак ‘ 1 'И до номера на знака' дължина ($ 0) -2 , ’, За да премахнете последните два знака в низа.
Премахване на последните два знака от низ

Премахнете както първия, така и последния знак от низ

За да премахнете както първия, така и последния знак от низ Здравей, как си? командата ще бъде:

$изхвърлен 'Здравей, как си?' | awk '{print substr ($ 0, 2, length ($ 0) - 2)}')

Където дължина ($ 0) -2 означава приспадане ' 2 “От общата дължина на знака.

Горната команда ще отпечата низа, започвайки с номер на знак „ 2 „До номера на знака“ дължина ($ 0) -2 , ’За премахване на първия и последния знак.

Премахнете както първия, така и последния знак от низ

Премахване на символ от низ чрез използване на cut

Cut е инструмент за командния ред, който обикновено се използва за извличане на част от текст от низ или файл и отпечатване на резултата до стандартен изход. Можете също да използвате тази команда за премахване на знаци от низ.

За демонстрационни цели ще използваме примерен низ и след това ще го изпратим до командата cut.

Премахване на първия знак от низ

За да премахнете първия знак от низ, Здравей, как си? командата ще бъде:

$изхвърлен 'Здравей, как си?' | разрез -° С 2-

Тази команда ще отпечата низ, започвайки с втория знак, докато премахва първия знак.
rmv изрязване -c

Премахнете първите четири знака от низ

За да премахнете първите четири знака от низ Здравей, как си? командата ще бъде:

$изхвърлен 'Здравей, как си?' | разрез -° С 5-

Тази команда ще отпечата низ, започвайки от петия знак, като същевременно премахва първите четири знака.
Премахнете първите четири знака от низ

Печат на низ между 2 -ри и 5 -ти знак

За да отпечатате низ Здравей, как си? между втория и петия знак , командата ще бъде:

$изхвърлен 'Здравей, как си?' | разрез -° С 2-5

Тази команда ще отпечата низ, започвайки от втория знак до петия знак, като същевременно премахва останалите начални и крайни знаци.
rmv 2 -ри и 5 -ти c2

Премахване на последния знак от низ

За да премахнете последния знак от низ Здравей, как си? използвай разрез команда с рев , както следва:

$изхвърлен 'Здравей, как си?' | рев | разрез -c2- | рев

Тази команда работи, като първо обръща низа, след това изрязва първия знак и накрая го обръща отново, за да ви даде желания резултат.
02 Премахване на последния знак от низ

Премахнете последните четири знака от низ

За да премахнете последните четири знака от реда Здравей, как си? командата ще бъде:

$изхвърлен 'Здравей, как си?' | рев | разрез -c5- | рев

Тази команда работи, като първо обърнете низ, след това изрежете първите четири знака и след това го обърнете отново, за да получите желания резултат.
rmv последните четири символа

Премахнете първия и последния знак от низ

За да премахнете първия и последния знак от низ Здравей, как си? използвай разрез команда с рев , както следва:

$изхвърлен 'Здравей свят!' | разрез -c2- | рев | разрез -c2- |рев

Тази команда работи, като изрязва първия знак, след това обръща низа и изрязва първия му знак и след това го обръща отново, за да ви даде желания резултат.
rmv първи и последен

Премахване на символ от низ чрез tr

Командата tr (съкращение от translate) се използва за превод, изстискване и изтриване на знаци от низ. Можете също да използвате tr за премахване на знаци от низ.

За демонстрационни цели ще използваме примерен низ и след това го изпращаме към командата tr.

Премахнете всички събития на героя

Използвайки командата tr, можете да премахнете всички появявания на малки или големи букви от вашия низ. Например, за да премахнете всички появявания на малкия знак „h“ от низ, командата ще бъде:

$изхвърлен 'Здравей, как си?' | NS з

премахнете всички събития 01

По подобен начин, за да премахнете всички появявания на главния знак „H“ от низ, командата ще бъде:

$изхвърлен 'Здравей, как си?' | NS З

Можете също да използвате интерпретирани последователности, за да премахнете малки или големи букви:

$изхвърлен 'Здравей, как си?'| NS [:горен:]

броя на случаите са по -ниски

$изхвърлен 'Здравей, как си?'| NS [:нисък:]

събития горни

Премахнете всички събития на малки и главни знаци

Можете също така да премахнете всички появявания на малки и големи букви от низ. Например следната команда ще премахне всички появявания на знака „h“, както малки, така и главни букви.

$изхвърлен 'Здравей, как си?' | NS 'HH'

явления горни и долни

Премахнете всички събития на знаци в определен диапазон

За да премахнете всички появявания на знаци от низ в конкретния диапазон „d-h“, командата ще бъде:

$изхвърлен 'Здравей, как си?' | NS 'd-h'

Тази команда ще премахне всички знаци в диапазона „d-h“ (d, e, f, g, h) в низа.
поява специфичен диапазон

Заключение

В Linux винаги ще има повече от един начин за извършване на проста работа. Същото важи и за премахването на знаци от низ. Тази статия ви показа четири различни начина за това, заедно с няколко примера за премахване на нежелани знаци от низ. Решението кой инструмент да използвате зависи от вашите предпочитания и, което е по -важно, от това, което искате да постигнете.