По-долу са включени някои сценарии, при които може да е необходимо премахване на бели пространства:
- За да преформатирате изходния код
- За почистване на данни
- За опростяване на изходите от командния ред
Възможно е да премахнете бели пространства ръчно, ако файл, който съдържа само няколко реда. Но за файл, съдържащ стотици редове, ще бъде трудно да премахнете ръчно всички бели пространства. Налични са различни инструменти на командния ред за тази цел, включително sed, awk, cut и tr. Сред тези инструменти awk е една от най-мощните команди.
Какво е Awk?
Awk е мощен и полезен скриптов език, използван при манипулиране на текст и генериране на отчети. Командата awk е съкратена, като се използват инициалите на всеки от хората (Aho, Weinberger и Kernighan), които са я разработили. Awk ви позволява да дефинирате променливи, числови функции, низове и аритметични оператори; създаване на форматирани отчети; и още.
Тази статия обяснява използването на командата awk за изрязване на бели пространства. След като прочетете тази статия, ще научите как да използвате командата awk, за да изпълните следното:
- Изрежете всички бели пространства във файл
- Подрежете водещите бели пространства
- Подрязване на бели пространства
- Подрежете както водещите, така и задните бели пространства
- Заменете многобройните интервали с едно интервал
Командите в тази статия са изпълнени на Ubuntu 20.04 Фокална система Fossa. Същите команди обаче могат да се изпълняват и на други дистрибуции на Linux. Ще използваме приложението по подразбиране Ubuntu Terminal за изпълнение на командите в тази статия. Можете да получите достъп до терминала, като използвате клавишната комбинация Ctrl + Alt + T.
За демонстрационни цели ще използваме примерния файл с име „sample.текст.”, За да изпълняваме примерите, предоставени в тази статия.
Преглед на всички бели пространства във файл
За да видите всички бели пространства, налични във файл, прекарайте изхода на командата 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 'под (/ [\ \ t] + $ /, ""); печат 'Където
- под е заместваща функция
- [ \T]+ представлява едно или повече интервали
- $ представлява края на низа
- "" не представлява нищо (отрязване на низа)
Горната команда замества едно или повече интервали в края на низа ([\ t] + $) с нищо (“”) за премахване на последващите бели пространства.
Можете да използвате следната команда, за да проверите дали горната команда е премахнала крайните бели пространства:
$ проба за котка.txt | awk 'под (/ [\ \ 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 'под (/ [\ \ t] + $ /, ""); печат '| | tr "" "*" | tr "\ t" "&"В нашия примерен файл имаше множество интервали. Както можете да видите, множество бели пространства в извадката.txt файлът беше заменен с едно празно пространство с помощта на командата awk.
За да отрежете белите пространства само в онези редове, които съдържат специфичен символ, като запетая, двоеточие или точка с двоеточие, използвайте командата awk с -F входен разделител.
Например, показаният по-долу е нашият примерен файл, който съдържа бели пространства във всеки ред.
За да премахнете белите пространства само от редовете, които съдържат запетая (,), командата ще бъде следната:
$ котка проба1.txt | awk -F, '/, / gsub (/ /, ""); печат 'Където (-F,) е разделителят на полето за въвеждане.
Горната команда само ще премахне и покаже белите пространства от редовете, които съдържат посочения символ (,) в тях. Останалите редове ще останат незасегнати.
Заключение
Това е всичко, което трябва да знаете, за да отрежете белите пространства във вашите данни, като използвате командата awk. Премахването на белите пространства от вашите данни може да се наложи по няколко различни причини. Каквато и да е причината, можете лесно да отрежете всички бели пространства във вашите данни, като използвате командите, описани в тази статия. Можете дори да отрежете водещи или крайни бели пространства, да отрежете както водещите, така и крайните бели пространства и да замените няколко интервала с едно интервал с командата awk.