Нижче наведено кілька сценаріїв, у яких може знадобитися видалення пробілів:
- Переформатувати вихідний код
- Для очищення даних
- Для спрощення результатів командного рядка
Можна видалити пробіли вручну, якщо файл містить лише кілька рядків. Але для файлу, що містить сотні рядків, буде важко видалити всі пробіли вручну. Для цього доступні різні інструменти командного рядка, включаючи sed, awk, cut та tr. Серед цих інструментів awk є однією з найпотужніших команд.
Що таке Awk?
Awk - це потужна і корисна мова сценаріїв, яка використовується для обробки тексту та генерації звітів. Команда awk скорочується, використовуючи ініціали кожного з людей (Ахо, Вайнбергер та Керніган), які її розробили. Awk дозволяє визначати змінні, числові функції, рядки та арифметичні оператори; створювати відформатовані звіти; і більше.
У цій статті пояснюється використання команди awk для обрізки пробілів. Прочитавши цю статтю, ви дізнаєтесь, як за допомогою команди awk виконати наступне:
- Обрізати всі пробіли у файлі
- Обрізати проміжні проміжки
- Обрізати кінцеві пробіли
- Обріжте пробіли як на початку, так і на кінці
- Замініть кілька пробілів на один пробіл
Команди в цій статті виконувались на Ubuntu 20.04 Фокальна система Fossa. Однак ті самі команди можуть виконуватися і в інших дистрибутивах Linux. Для запуску команд у цій статті ми будемо використовувати програму Ubuntu Terminal за замовчуванням. Ви можете отримати доступ до терміналу за допомогою комбінації клавіш Ctrl + Alt + T.
Для демонстраційних цілей ми будемо використовувати файл-зразок із назвою „sample.txt.”Для виконання прикладів, наведених у цій статті.
Переглянути всі пробіли у файлі
Щоб переглянути всі пробіли, наявні у файлі, передайте вихідні дані команди cat до команди tr, як показано нижче:
$ зразок кота.txt | tr "" "*" | tr "\ t" "&"Ця команда замінить усі пробіли у даному файлі символом (*). Після введення цієї команди ви зможете чітко побачити, де всі пробіли (включаючи пробіли як провідні, так і кінцеві) містяться у файлі.
Символи * на наступному скріншоті показують, де всі пробіли присутні у зразковому файлі. Сингл * представляє єдиний пробіл.
Обрізати всі пробіли
Щоб видалити всі пробіли з файлу, передайте команду out of cat команді awk, як показано нижче:
$ зразок кота.txt | awk 'gsub (/ /, ""); друк 'Де
- gsub (розшифровується як глобальне заміщення) - це функція заміщення
- / / представляють пробіл
- "" нічого не представляє (обрізати рядок)
Вищевказана команда замінює всі пробіли (/ /) нічим (“”).
На наступному скріншоті ви можете бачити, що всі пробіли, включаючи пробіли, що ведуть та завершуються, були видалені з вихідних даних.
Обрізати провідні пробіли
Щоб видалити лише провідні пробіли з файлу, передайте команду out of cat команді awk, як показано нижче:
$ зразок кота.txt | awk 'суб (/ ^ [\ t] + /, ""); друк 'Де
- під є функцією заміщення
- ^ являє собою початок рядка
- [\ t]+ представляє один або кілька пробілів
- "" нічого не представляє (обрізати рядок)
Вищенаведена команда замінює один або кілька пробілів на початку рядка (^ [\ t] +) нічим (“”), щоб видалити пробіли, що ведуть.
На наступному скріншоті ви бачите, що всі провідні пробіли були видалені з вихідних даних.
Ви можете використати таку команду, щоб переконатися, що вищевказана команда видалила пробіли, що ведуть:
$ зразок кота.txt | awk 'суб (/ ^ [\ t] + /, ""); друк '| tr "" "*" |tr "\ t" "&"
На скріншоті нижче добре видно, що були видалені лише пробіли.
Обрізати кінцеві пробіли
Щоб видалити з файла лише кінцеві пробіли, передайте команду out of cat команді awk, як показано нижче:
$ зразок кота.txt | awk 'sub (/ [\ t] + $ /, ""); друк 'Де
- під є функцією заміщення
- [\ t]+ представляє один або кілька пробілів
- $ представляє кінець рядка
- "" нічого не представляє (обрізати рядок)
Вищевказана команда замінює один або кілька пробілів у кінці рядка ([\ t] + $) нічим (“”), щоб видалити кінцеві пробіли.
Ви можете використати таку команду, щоб переконатися, що наведена вище команда видалила кінцеві пробіли:
$ зразок кота.txt | awk 'sub (/ [\ t] + $ /, ""); друк '| tr "" "*" | tr "\ t" "&"З наведеного нижче знімка екрану добре видно, що кінцеві пробіли були видалені.
Обрізати провідні та кінцеві пробіли
Щоб видалити як провідні, так і кінцеві пробіли з файлу, передайте команду out of cat команді awk, як показано нижче:
$ зразок кота.txt | awk 'gsub (/ ^ [\ t] + | [\ t] + $ /, ""); друк 'Де
- gsub є глобальною функцією заміщення
- ^ [\ t]+ представляє провідні пробіли
- [\ t] + $ представляє кінцеві пробіли
- "" нічого не представляє (обрізати рядок)
Вищевказана команда замінює пробіли як на початку, так і на кінці (^ [\ t]+ [\ t] + $), нічого (“”) для їх видалення.
Щоб визначити, чи видалена вищезазначеною командою як провідні, так і кінцеві пробіли у файлі, використовуйте таку команду:
$ зразок кота.txt | awk 'gsub (/ ^ [\ t] + | [\ t] + $ /, ""); друк '|tr "" "*" | tr "\ t" "&"
З наведеного нижче знімка екрану добре видно, що пробіли, як провідні, так і кінцеві, були видалені, і залишаються лише пробіли між рядками.
Замініть кілька пробілів на один пробіл
Щоб замінити кілька пробілів одним пробілом, переведіть команду out of cat до команди awk, як показано нижче:
$ зразок кота.txt | awk 'gsub (/ [] + /, ""); друк 'Де:
- gsub є глобальною функцією заміщення
- []+ представляє один або кілька пробілів
- "" представляє один пробіл
Наведена команда замінює кілька пробілів ([] +) одним пробілом (““).
Ви можете використовувати наступну команду, щоб переконатися, що вищевказана команда замінила кілька пробілів пробілами:
$ зразок кота.txt | awk 'sub (/ [\ t] + $ /, ""); друк '| | tr "" "*" | tr "\ t" "&"У нашому зразковому файлі було кілька пробілів. Як бачите, кілька пробілів у зразку.txt-файл замінено одним пробілом за допомогою команди awk.
Щоб обрізати пробіли лише в тих рядках, які містять певний символ, наприклад, кому, двокрапку або крапку з комою, використовуйте команду awk з -F вхідний роздільник.
Наприклад, нижче показано наш зразок файлу, який містить пробіли в кожному рядку.
Щоб видалити пробіли лише з рядків, що містять кому (,), команда буде такою:
$ зразок кота1.txt | awk -F, '/, / gsub (/ /, ""); друк 'Де (-F,) - роздільник поля введення.
Вищевказана команда лише видалить та відобразить пробіли з рядків, що містять у них вказаний символ (,). Решта рядків залишаться незмінними.
Висновок
Це все, що вам потрібно знати, щоб обрізати пробіли у ваших даних за допомогою команди awk. Видалення пробілів із ваших даних може знадобитися з кількох різних причин. Незалежно від причини, ви можете легко обрізати всі пробіли у ваших даних за допомогою команд, описаних у цій статті. Ви навіть можете обрізати пробіли на початку та в кінці, обрізати пробіли як на початку, так і на кінці, і замінити кілька пробілів на один пробіл командою awk.