sed

Sed Видалити пробіли

Sed Видалити пробіли
Видалення пробілів у документах є важливим кроком форматування, який необхідний для поліпшення загального макета тексту та забезпечення чистоти та охайності даних. Це допомагає зберігати лише необхідні дані та позбавлятися від непотрібних пробілів на початку та в кінці. Нижче наведено кілька сценаріїв, коли вам може знадобитися видалити пробіли:

Якщо говорити про провідні пробіли, їх порівняно легко помітити, як і на початку тексту. Однак виявити проміжки, що виходять, непросто. Те саме стосується подвійних пробілів, які також часом важко помітити. Усе це стає більш складним завданням, коли вам потрібно видалити всі проміжні проміжні та кінцеві пробіли з документа, що містить тисячі рядків.

Щоб видалити пробіли з документа, ви можете використовувати різні інструменти, такі як awk, sed, cut і tr. У деяких інших статтях ми обговорювали використання awk для видалення пробілів. У цій статті ми обговоримо використання sed для видалення пробілів із даних.

Ви дізнаєтесь, як використовувати sed:

Ми будемо запускати команди на Ubuntu 20.04 Фокальна ямка. Ви також можете запускати ті самі команди в інших дистрибутивах Linux. Для запуску команд ми будемо використовувати програму Ubuntu Terminal за замовчуванням. Щоб відкрити термінал, використовуйте комбінацію клавіш Ctrl + Alt + T.

Що таке Sed

Sed (розшифровується як редактор потоків) - це дуже потужна та зручна утиліта в Linux, яка дозволяє нам виконувати основні маніпуляції з текстом на вхідних потоках. Це не текстовий редактор, але він допомагає маніпулювати та фільтрувати текст. Він отримує вхідні потоки та редагує їх відповідно до інструкцій користувача, а потім друкує перетворений текст на екран.

За допомогою sed ви можете:

Використання Sed для видалення пробілів

Для видалення пробілів із тексту ми використовуватимемо такий синтаксис:

s / REGEXP / replacement / flags

Де

Регулярні вирази

Деякі регулярні вирази, які ми будемо використовувати тут:

З метою демонстрації ми будемо використовувати наступний зразок файлу з назвою „testfile”.

Переглянути всі пробіли у файлі

Щоб знайти всі пробіли у вашому файлі, передайте вихідні дані команди cat до команди tr таким чином:

$ cat testfile | tr "" "*" | tr "\ t" "&"

Ця команда замінює всі пробіли у вашому файлі символом (*), що полегшує визначення всіх пробілів, незалежно від того, чи є вони одинарними, множинними, провідними або кінцевими пробілами.

На наступному скріншоті ви можете побачити пробіли, замінені символом *.

Видалити всі пробіли (включаючи пробіли та вкладки)

У деяких випадках потрібно видалити всі пробіли з даних, тобто.e. провідні, кінцеві та пробіли між текстами. Наступна команда видалить усі пробіли з “тестового файлу”.

$ cat testfile | sed -r 's / \ s + // g'

Примітка: Sed не змінює ваші файли, якщо ви не збережете вихідні дані у файл.

Вихід:

Після запуску наведеної вище команди з’явився такий вивід, який показує, що всі пробіли були видалені з тексту.

Ви також можете використовувати наступну команду, щоб перевірити, чи всі пробіли були видалені.

$ cat testfile | sed -r 's / \ s + // g' | tr "" "*" | tr "\ t" "&"

З виводу видно, що немає символу (*), що означає, що всі пробіли були видалені.

Щоб видалити всі пробіли, але лише з певного рядка (скажімо, рядок номер 2), ви можете використовувати таку команду:

$ cat testfile | sed -r '2s / \ s + // g'

Видалити всі провідні пробіли (включаючи пробіли та вкладки)

Щоб видалити всі пробіли з початку кожного рядка (провідні пробіли), використовуйте таку команду:

$ cat testfile | sed 's / ^ [\ t] * //'

Вихід:

Наступний вивід з’явився після запуску наведеної вище команди, яка показує, що всі провідні пробіли були видалені з тексту.

Ви також можете використати таку команду, щоб перевірити, що всі провідні пробіли були видалені:

$ cat testfile | sed 's / ^ [\ t] * //' | tr "" "*" | tr "\ t" "&"

З вихідних даних видно, що на початку рядків немає символу (*), який підтверджує, що всі пробіли, що ведуть, видалено.

Щоб видалити пробіли, що ведуть, лише з певного рядка (скажімо, рядок номер 2), ви можете використовувати таку команду:

$ cat testfile | sed '2s / ^ [\ t] * //'

Видалити всі кінцеві пробіли (включаючи пробіли та вкладки)

Щоб видалити всі пробіли з кінця кожного рядка (кінцеві пробіли), використовуйте таку команду:

$ cat testfile | sed 's / [\ t] * $ //'

Вихід:

Наступний результат з’явився після запуску наведеної вище команди, яка показує, що всі кінцеві пробіли були видалені з тексту.

Ви також можете скористатися наведеною нижче командою, щоб перевірити, чи всі проміжні проміжки були видалені.

$ cat testfile | sed 's / [\ t] * $ //' | tr "" "*" | tr "\ t" "&"

З вихідних даних видно, що в кінці рядків немає символу (*), який підтверджує, що всі кінцеві пробіли видалено.

Щоб видалити кінцеві пробіли лише з певного рядка (скажімо, рядок номер 2), можна скористатися наступною командою:

$ cat testfile | sed '2s / [\ t] * $ //'

Видаліть проміжні проміжні та кінцеві пробіли

Щоб видалити всі пробіли як з початку, так і з кінця кожного рядка (i.e. як провідні, так і кінцеві пробіли), використовуйте таку команду:

$ cat testfile | sed 's / ^ [\ t] * //; s / [\ t] * $ //'

Вихід:

Наступний висновок з’явився після запуску наведеної вище команди, яка показує, що проміжні проміжні та кінцеві проміжки були видалені з тексту.

Ви також можете скористатися наступною командою, щоб перевірити, що пробіли як на початку, так і на кінці були видалені.

$ cat testfile | sed 's / ^ [\ t] * //; s / [\ t] * $ //' | tr "" "*" | tr "\ t" "&"

З вихідних даних видно, що на початку або в кінці рядків немає символу (*), який підтверджує, що всі провідні та кінцеві пробіли видалено.

Щоб видалити пробіли як на початку, так і на кінці лише з певного рядка (скажімо, рядок номер 2), можна скористатися наступною командою:

$ cat testfile | sed '2s / ^ [\ t] * //; 2s / [\ t] * $ //'

Замініть кілька пробілів на одинарні пробіли

У деяких випадках у файлі є кілька пробілів в одному місці, але вам потрібні лише одні пробіли. Ви можете зробити це, замінивши ці кілька пробілів на один пробіл, використовуючи sed.

Наступна команда замінить усі множинні пробіли одинарними пробілами з кожного рядка у “тестовому файлі”.

$ cat testfile | sed 's / [] \ + / / g'

Вихід:

Наступний результат з’явився після запуску наведеної вище команди, яка показує, що множинні пробіли замінені єдиними пробілами.

Ви також можете скористатися наступною командою, щоб перевірити, чи замінено кілька пробілів на один пробіл:

$ cat testfile | sed 's / [] \ + / / g' | tr "" "*" | tr "\ t" "&"

З вихідних даних ви можете побачити одинарний символ (*) у кожному місці, який підтверджує, що всі випадки декількох пробілів замінені одним пробілом.

Отже, все це стосувалося видалення пробілів з ваших даних за допомогою sed. У цій статті ви дізналися, як за допомогою sed видалити всі пробіли з даних, видалити лише провідні або кінцеві пробіли, а також провідні та кінцеві пробіли. Ви також дізналися, як замінити кілька пробілів одним пробілом. Тепер вам буде легко видалити пробіли з файлу, що містить сотні або тисячі рядків.

Корисні інструменти для геймерів Linux
Якщо ви любите грати в ігри на Linux, швидше за все, ви, можливо, використовували додатки та утиліти, такі як Wine, Lutris та OBS Studio, щоб покращит...
HD Remastered Games для Linux, які раніше ніколи не випускали Linux
Багато розробників і видавців ігор випускають HD-ремастер старих ігор, щоб продовжити життя франшизи. Будь ласка, шанувальники просять сумісність із с...
Як використовувати AutoKey для автоматизації ігор Linux
AutoKey - це утиліта автоматизації робочого столу для Linux та X11, запрограмована на Python 3, GTK та Qt. Використовуючи його сценарії та функціональ...