сед

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 / заместване / флагове

Където

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

Някои от регулярните изрази, които ще използваме тук, са:

За демонстрационни цели ще използваме следния примерен файл, наречен „testfile“.

Преглед на всички бели пространства във файл

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

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

Тази команда замества всички бели пространства във вашия файл със символ (*), което улеснява разпознаването на всички бели пространства, независимо дали са единични, множествени, водещи или последващи бели пространства.

На следващата екранна снимка можете да видите белите пространства да бъдат заменени със символ *.

Премахване на всички бели пространства (включително интервали и раздели)

В някои случаи трябва да премахнете всички бели пространства от данните, т.е.д. водещи, последващи и бели пространства между текстовете. Следващата команда ще премахне всички бели пространства от „testfile“.

$ 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] * $ //'

Премахнете както водещите, така и крайните бели пространства

За да премахнете всички бели пространства както от началото, така и от края на всеки ред (т.е.д. както водещи, така и последващи бели пространства), използвайте следната команда:

$ 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.

Следващата команда ще замени всички множество бели пространства с единични интервали от всеки ред в „testfile“.

$ 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. Използвайки неговата функционалност за скр...