Іноді вам може знадобитися видалити символи з рядка. Якою б не була причина, Linux надає вам різні вбудовані, зручні інструменти, які дозволяють видаляти символи з рядка в Bash. У цій статті показано, як використовувати ці інструменти для видалення символів із рядка.
Стаття висвітлює, як виконати наступне:
- Видаліть символ із рядка за допомогою sed
- Видаліть символ із рядка за допомогою awk
- Видаліть символ із рядка за допомогою вирізу
- Видалити символ із рядка за допомогою tr
Команди, показані в цій статті, виконувались в Ubuntu 20.04 Фокальна ямка. Ці ж команди можна виконувати і в інших дистрибутивах Linux, у яких доступні вищевказані інструменти. Для запуску команд ми будемо використовувати програму Terminal за замовчуванням. Ви можете отримати доступ до програми Terminal за допомогою комбінації клавіш Ctrl + Alt + T.
Видалення символів із рядка за допомогою sed
Sed - це потужна та зручна утиліта, яка використовується для редагування потоків тексту. Це неінтерактивний текстовий редактор, який дозволяє виконувати основні текстові маніпуляції на вхідних потоках. Ви також можете використовувати sed для видалення небажаних символів із рядків.
Для демонстраційних цілей ми використовуємо зразок рядка, а потім передаємо його команді sed.
Видалити конкретний символ із рядка
Використовуючи sed, ви можете видалити певний символ із рядка. Наприклад, видалити “h” із рядка “Привіт як ти?”Команда буде такою:
$ echo "привіт, як справи?"| sed 's / h //'Це видалить лише перше входження "h" у рядок.
Щоб видалити всі входження "h" із рядка, використовуйте таку команду:
Де g означає глобальний. Це видалить усі входження "h" у рядок.
Видалити перший символ із рядка
Щоб видалити перший символ із рядка “Привіт як ти?" команда буде такою:
$ echo "привіт, як справи?"| sed 's / ^.// 'файлДе (.) відповідає точно одному символу і (^) відповідає будь-якому символу на початку рядка.
Видалити останній символ із рядка
Щоб видалити останній символ із рядка “Привіт як ти?" команда буде такою:
$ echo "привіт, як справи?"| sed 's /.$ // 'Де (.) відповідає точно одному символу і ($) відповідає будь-якому символу в кінці рядка.
Видаліть перший та останній символ із рядка
Щоб видалити перший і останній символ із рядка “Привіт як ти?" команда буде такою:
$ echo "привіт, як справи?"| sed 's / ^.//; s /.$ // '
Видалення символів із рядка за допомогою awk
Awk - це потужна мова сценаріїв, яка використовується для узгодження шаблонів, поряд з обробкою тексту. Awk дозволяє фільтрувати та перетворювати текст різними способами. Ви також можете використовувати awk для видалення символів із рядків.
Для демонстраційних цілей ми використовуємо зразок рядка, а потім передаємо його команді awk.
Видалити перший символ із рядка
Щоб видалити перший символ із рядка “Привіт як ти?" команда буде такою:
$ echo "привіт, як справи?"| awk 'print substr ($ 0, 2)'Де ($ 0) - весь цільовий рядок, а (2) - початкова позиція символу. Вищевказана команда видаляє перший символ, 'h,' номер символу '1', і повертає цільовий рядок, що починається з другого символу, 'e.'
Видаліть перші два символи з рядка
Ви також можете видалити певну кількість символів з початку рядка. Наприклад, щоб видалити перші два символи з рядка “Привіт як ти?" команда буде такою:
$ echo "привіт, як справи?"| awk 'print substr ($ 0, 3)'Вищевказана команда видалить перші два символи, "він", або номери символів "1 і 2", і поверне цільовий рядок, що починається з номера символу "3" або "l.'
Видалити останній символ із рядка
Щоб видалити останній символ із “Привіт як ти?" команда буде такою:
$ echo "привіт, як справи?"| awk 'print substr ($ 0, 1, length ($ 0) -1)'Де довжина ($ 0) -1 означає вирахування '1'від загальної довжини символу.
Вищевказана команда надрукує рядок, що починається з номера символу '1' аж до довжина ($ 0) -1 позбавити останнього символу.
Існує '19'символи (включаючи пробіли) у наведеному вище рядку. Команда буде працювати, друкуючи всі символи, починаючи з символу '1'і до характеру'18,'під час видалення останнього символу'19.'
Видаліть два останні символи з рядка
Щоб видалити два останні символи з “Привіт як ти?”Команда буде такою:
$ echo "привіт, як справи?"| awk 'print substr ($ 0, 1, length ($ 0) -2)')Де довжина ($ 0) -2 означає вирахування '2'від загальної довжини символу.
Вищевказана команда надрукує рядок, починаючи з номера символу '1'і до номера символу'довжина ($ 0) -2,'для видалення останніх двох символів у рядку.
Видаліть із рядка як першого, так і останнього символів
Щоб видалити як перший, так і останній символи з рядка “Привіт як ти?" команда буде такою:
$ echo "привіт, як справи?"| awk 'print substr ($ 0, 2, length ($ 0) - 2)' 'Де довжина ($ 0) -2 означає вирахування '2'від загальної довжини символу.
Вищевказана команда надрукує рядок, починаючи з номера символу '2'до номера символу'довжина ($ 0) -2,'для видалення першого та останнього символів.
Видалення символу з рядка за допомогою вирізу
Вирізати - це інструмент командного рядка, який зазвичай використовується для вилучення частини тексту з рядка або файлу та друку результату у стандартному виведенні. Ви також можете використовувати цю команду для видалення символів із рядка.
Для демонстраційних цілей ми використаємо зразок рядка, а потім передаємо його команді cut.
Видалити перший символ із рядка
Щоб видалити перший символ із рядка, “Привіт як ти?" команда буде такою:
$ echo "привіт, як справи?"| вирізати -c 2-Ця команда надрукує рядок, починаючи з другого символу, одночасно видаляючи перший символ.
Видаліть перші чотири символи з рядка
Щоб видалити перші чотири символи з рядка “Привіт як ти?" команда буде такою:
$ echo "привіт, як справи?"| вирізати -c 5-Ця команда надрукує рядок, починаючи з п'ятого символу, одночасно видаляючи перші чотири символи.
Друкувати рядок між 2 та 5 символами
Щоб надрукувати рядок “Привіт як ти?" між другим і п'ятим символами, команда буде такою:
$ echo "привіт, як справи?"| вирізати -c 2-5Ця команда надрукує рядок, починаючи з другого символу і закінчуючи п'ятим символом, видаляючи при цьому залишилися символи початку та кінця.
Видалити останній символ із рядка
Щоб видалити останній символ із рядка “Привіт як ти?" використовувати вирізати команда за допомогою рев, наступним чином:
$ echo "привіт, як справи?"| rev | вирізати -c2- | revЦя команда працює, спершу повертаючи рядок, потім вирізаючи перший символ і, нарешті, повертаючи його знову, щоб отримати бажаний результат.
Видалити останні чотири символи з рядка
Щоб видалити останні чотири символи з рядка “Привіт як ти?" команда буде такою:
$ echo "привіт, як справи?"| rev | вирізати -c5- | revЦя команда працює, спершу змінивши рядок, потім вирізавши перші чотири символи, а потім повернувши його назад, щоб отримати бажаний результат.
Видалення першого та останнього символів із рядка
Щоб видалити перший та останній символи з рядка “Привіт як ти?" використовувати вирізати команда за допомогою рев, наступним чином:
$ echo "привіт світ!"| вирізати -c2- | rev | вирізати -c2- | revЦя команда працює, вирізаючи перший символ, потім обертаючи рядок і вирізаючи його перший символ, а потім повертаючи його знову, щоб отримати бажаний результат.
Видалення символу з рядка за допомогою tr
Команда tr (скорочення від translate) використовується для перекладу, стискання та видалення символів із рядка. Ви також можете використовувати tr, щоб видалити символи з рядка.
Для демонстраційних цілей ми використовуємо зразок рядка, а потім передаємо його команді tr.
Видалити всі випадки характеру
За допомогою команди tr ви можете видалити всі випадки малих чи великих символів зі свого рядка. Наприклад, щоб видалити всі входження символу нижнього регістру 'h' із рядка, команда буде такою:
$ echo "Привіт, як справи?"| tr -d h
Аналогічним чином, щоб видалити всі входження великого символу 'H' із рядка, команда буде такою:
$ echo "Привіт, як справи?"| tr -d HВи також можете використовувати інтерпретовані послідовності для видалення малих чи великих літер:
$ echo "Привіт, як справи?"| tr -d [: верхній:]$ echo "Привіт, як справи?"| tr -d [: нижній:]
Видаліть усі випадки малих та великих символів
Ви також можете видалити з рядка всі випадки введення як малих, так і великих символів. Наприклад, наступна команда видалить усі входження символу 'h', як малі, так і великі.
$ echo "Привіт, як справи?"| tr -d 'hH'
Видаліть усі випадки появи символів у певному діапазоні
Щоб видалити всі випадки входження символів із рядка в певному діапазоні 'd-h', команда буде такою:
$ echo "привіт, як справи?"| tr -d 'd-h'Ця команда видалить усі символи з діапазону "d-h" (d, e, f, g, h) у рядку.
Висновок
У Linux завжди буде кілька способів виконати просту роботу. Те саме стосується видалення символів із рядка. Ця стаття показала вам чотири різні способи зробити це, а також кілька прикладів для видалення небажаних символів із рядка. Рішення, яким інструментом користуватися, залежить від ваших уподобань і, що більш важливо, від того, чого ви хочете досягти.